【发布时间】:2018-07-07 04:16:35
【问题描述】:
我正在尝试使用复选框的输入更改“继续”按钮将用户带到 Tkinter GUI 的页面。现在,所有三个页面都显示在一个页面中。
从初始化 Tkinter 开始
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)#initialized tkinter
container = tk.Frame(self)#define our tkinter container
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, PageTwo):
frame = F(container, 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)
chk_state = tk.BooleanVar()
chk_state.set(False)#uncheck
chk = tk.Checkbutton(self, text = "Select a slice range",font =(20), var=chk_state)#, command = click())
chk.place(relx=.5,rely=.39,anchor='center')
def browsefunc3():
if chk_state == False:
command = lambda: self.controller.show_frame(PageOne)
else:
command = lambda: self.controller.show_frame(PageTwo)
return command
button3 = tk.Button(text="Continue", bg = "white", fg = 'black',font=(20), command = lambda: browsefunc3())
button3.place(relx=.5, rely =.75, anchor='center')
然后写另外两页
class PageOne(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
button3 = tk.Button(text="One", bg = "white", fg = 'black',font=(20), command = lambda: self.controller.show_frame(StartPage))
button3.place(relx=.5, rely =.75, anchor='center')
和
class PageTwo(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
button3 = tk.Button(text="Two", bg = "white", fg = 'black',font=(20), command = lambda: self.controller.show_frame(StartPage))
button3.place(relx=.5, rely =.75, anchor='center')
【问题讨论】: