虽然我并不是说你的代码必须与下面的代码相似,因为相同的行为可以用不同的方式和样式编写,但它会满足你的需要。在
我在你的代码中看到了两三个基本错误。在
通过调用Tk()将主根窗口作为参数传递。
这是错误的,因为应该只有一个Tk实例,在tkinter程序中使用TK()调用。给它一个名称,比如root,然后使用它们的引用。在
其次,你看不到任何东西,因为你一直睡不着觉,你应该调用mainloop(),否则你的程序不会更新UI,也不会响应事件。在
mainloop是Tk实例的tkinter事件循环。因此,使用所有小部件设置完整的UI,并确保代码到达并结束调用root.mainloop()的语句。在
另外,您通常不需要调用sleep(),这是一个阻塞函数。任何阻塞函数也会阻塞主循环,禁止更新和事件接收,直到它返回为止。在
下面是一些代码from tkinter import ttk, Tk, Toplevel
root = Tk()
welcome_window = Toplevel(root)
welcome_window.title('Welcome')
lab_window = Toplevel(root)
lab_window.title('Lab')
root.withdraw() # hide root window
lab_window.withdraw() # hide lab window
def goto_lab():
welcome_window.destroy()
lab_window.deiconify() # show lab window
button1 = ttk.Button(welcome_window, text='Close',\
command=goto_lab)
button1.pack(padx=100, pady=50)
button2 = ttk.Button(lab_window, text='Close',\
command=quit)
button2.pack(padx=100, pady=50)
root.mainloop()
关于给你的GUI代码一些结构,当你开始学习tkinter时,看看这个thread