import tkinter as tk
LARGE_FONT=("Verdana",12)
class myClass(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 = {}
frame = StartPage(container,self,"startPage","visit page 1","pageone")
frame2 = StartPage(container,self,"pageone","Go BAck","startPage")
self.frames["startPage"]=frame
self.frames["pageone"]=frame2
frame.grid(row=0,column=0,sticky="nsew")
self.show_frame("startPage")
def show_frame(self,cont):
print(cont)
print(self.frames)
print(self.frames[cont])
frame = self.frames[cont]
print(frame)
frame.tkraise()
def qf(param):
print(param)
class StartPage(tk.Frame):
def __init__(self,parent,controller,lableName,butonName,visitToPage):
tk.Frame.__init__(self,parent)
label = tk.Label(self,text=lableName,font=LARGE_FONT)
label.pack(pady=10,padx=10)
button1 = tk.Button(self,text =butonName,command=lambda: controller.show_frame(visitToPage))
button1.pack()
app = myClass()
app.mainloop()
我正在尝试使用一个类 StartPage
创建两个框架,因此我为第 1 帧的 StartPage
提供了参数 “startPage”
, “访问第 1 页”
、“pageone”
,第 2 帧为 “pageone”
、“返回”
,"起始页"
,
但是通过按下按钮,即使参数对于函数 show_frame
来说是正确的,框架也不会切换。
最佳答案
它不起作用,因为您尚未将 pageone 框架放置在网格中。只需将此行放在frame.grid之后即可工作:
frame2.grid(row=0,column=0,sticky="nsew")
关于python - 为什么使用 tkinter tkraise 时帧不提升?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41918796/