我使用 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", ...)