我正在尝试创建一个GUI,该GUI在破坏最后一个窗口的同时按下按钮后会打开一个新窗口。我没有收到任何错误,但是当我运行程序时,什么也没出现。
from Tkinter import *
def team():
def table():
table = Toplevel(contributers)
contributers.destroy()
def contributers():
contributers = Toplevel(table)
table.destroy()
def firstpage():
firstpage = Toplevel(letsbegin)
letsbegin.destroy()
def secondpage():
secondpage = Toplevel(firstpage)
firstpage.destroy()
def leave():
exit()
root = Tk()
root.title("Team Blue")
label1 = label(menu, text="Team Blue", bg = "Yellow", fg="Black")
button1 = button(menu, text="ENTER", width=15, bg="yellow", fg="Black", command =contributers)
button2 = button(menu, text="Exit", bg="red", fg="white", command=leave)
root.mainloop()
我只想运行这段代码
答案 0 :(得分:1)
这是因为当您将整个代码包装在功能名称 team()中时。
因此,必须在适当位置调用该方法才能运行程序。
,请确保将作为 label 功能的字母大小写写为 Label(), button()也是 Button ()。
,而且您还必须使用 root 代替菜单,然后希望您看到窗口。
包装内容。
答案 1 :(得分:1)
您有很多我在评论中提到的错误。
如果您想关闭一个窗口并打开新窗口,则销毁第一个窗口-root.destroy()
-然后再次使用Tk()
创建新窗口并再次使用mainloop()
。
我将新窗口分配给全局变量root
,因此我可以使用几乎相同的代码关闭第二个窗口并打开第三个窗口。
我使用global root
,因此变量root
不是局部变量,而是全局变量,可以使用其他功能(分配给root
的窗口)。
from Tkinter import *
# --- functions ---
def open_first_window():
global root
root = Tk()
label1 = Label(root, text="Team Brake 'Em")
label1.pack()
button1 = Button(root, text="Open Second Window", command=open_second_window)
button1.pack()
button2 = Button(root, text="Exit", command=root.destroy)
button2.pack()
root.mainloop()
def open_second_window():
global root
root.destroy()
root = Tk()
label1 = Label(root, text="Second Window")
label1.pack()
button1 = Button(root, text="Open Third Window", command=open_third_window)
button1.pack()
button2 = Button(root, text="Exit", command=root.destroy)
button2.pack()
root.mainloop()
def open_third_window():
global root
root.destroy()
root = Tk()
label1 = Label(root, text="Third Window")
label1.pack()
button2 = Button(root, text="Exit", command=root.destroy)
button2.pack()
root.mainloop()
# --- main ---
open_first_window()
还有另一种流行的方法-不要重试窗口,而是删除所有小部件并放入新的小部件。小部件Frame
可能有用,因为您可以将所有小部件都放在Frame
中,而Frame
可以放在Window中,以后您只需要删除Frame
并放入新的Frame
带有新的小部件。
from Tkinter import *
# --- function ---
def create_first_frame():
global root
global frame
#frame.destroy()
frame = Frame()
frame.pack()
label1 = Label(frame, text="Team Brake 'Em")
label1.pack()
button1 = Button(frame, text="Open Second Window", command=create_second_frame)
button1.pack()
button2 = Button(frame, text="Exit", command=root.destroy)
button2.pack()
def create_second_frame():
global root
global frame
frame.destroy()
frame = Frame()
frame.pack()
label1 = Label(frame, text="Second Window")
label1.pack()
button1 = Button(frame, text="Open Third Window", command=create_third_frame)
button1.pack()
button2 = Button(frame, text="Exit", command=root.destroy)
button2.pack()
def create_third_frame():
global root
global frame
frame.destroy()
frame = Frame()
frame.pack()
label1 = Label(frame, text="Third Window")
label1.pack()
button2 = Button(frame, text="Exit", command=root.destroy)
button2.pack()
# --- main ---
root = Tk()
create_first_frame()
root.mainloop()