我的框架并排显示.我想在顶部只显示一个并通过按钮切换它们



我使用 tkinter,每个帧只有 1 张图像、1 个标签和 1 个按钮(从帧切换到帧(,它们都并排显示在一起。 标签是我单击按钮时唯一更改的元素。 谁能帮我把其中一个放在上面?

这是我的代码

import tkinter as tk
from tkinter import ttk
from PIL import Image, ImageTk
LARGE_FONT = ("Verdana", 12)
class main(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        container = tk.Frame(self)
        container.pack(side="top", fill="both", expand= True)
        container.grid_rowconfigure(0, weight=1)
        container.grid_columnconfigure(0, weight=1)
        self.frames = { }
        for F in (StartPage, Pageone):
            frame = F(parent= container, controller= self)
            self.frames[F] = frame
            frame.grid(row=0, column=0, sticky="nsew")
        self.show_frame(StartPage)

    def show_frame(self, cont):
        frame = self.frames[cont]
        frame.tkraise()
class StartPage(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        Label = tk.Label(self, text= "that's the first frame", font = LARGE_FONT)
        Label.pack(pady=10, padx=10)
        Button= ttk.Button(text= "visit page 1", command= lambda: controller.show_frame(Pageone))
        Button.pack()
        image = Image.open(r'/Users/me/Documents/pythonfolder/kushina.jpg')
        image.thumbnail((300,300), Image.ANTIALIAS)
        photo = ImageTk.PhotoImage(image)
        Label_image = tk.Label(image=photo)
        Label_image.image = photo
        Label_image.pack()

class Pageone(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        Label = tk.Label(self, text= "that's the second frame", font = LARGE_FONT)
        Label.pack(pady=10, padx=10)
        Button= ttk.Button(text= "back to home", command= lambda: controller.show_frame(StartPage))
        Button.pack()
        image = Image.open(r'/Users/me/Documents/pythonfolder/kushina3.jpg')
        image.thumbnail((300,300), Image.ANTIALIAS)
        photo = ImageTk.PhotoImage(image)
        Label_image = tk.Label(image=photo)
        Label_image.image = photo
        Label_image.pack()
app = main()
app.mainloop()

父级传递给您的小部件启动,或者默认情况下,它们将放置在实例Tk根窗口中。取代:

Button= ttk.Button(text= "visit page 1", ...)

跟:

Button = ttk.Button(self, text= "visit page 1", ...)

最新更新