提前感谢您的帮助。我写了一个简单的GUI,想要通过点击“苹果汁”按钮打开另一个GUI。但是,“apple juice”GUI会在开始时打开。
我输入的代码有什么问题吗?如果没有,如何仅在单击按钮时才将其打开?这是我的代码:
import Tkinter
###############
win = Tkinter.Tk()
win.geometry("500x25")
Tkinter.Label(win, text="You've chosen apple juice!", font="bold").pack()
##############
root = Tkinter.Tk()
root.geometry("500x300")
# Label asking what drink
Tkinter.Label(root, text="What drink would you like?", bg="goldenrod", font="bold").pack()
# white space
Tkinter.Label(root, text="").pack()
#Choices
Tkinter.Label(root, text="Whichever choice you want, simply press the buton!").pack()
# Apple juice button
def apple_juice():
win.mainloop()
Tkinter.Button(root, text="Apple Juice", bg="SkyBlue1", command=apple_juice).pack()
root.mainloop()
答案 0 :(得分:2)
你的问题来自于一些误解。
与Highlander一样,Tkinter程序中只能有一个主循环。因此,当您创建其他根窗口时,它将会显示出来。期。此外,它不是.mainloop()
开始显示窗口,而是开始处理事件的内容。
最后,除非你做了一些可怕的事情,否则这段代码不是Python3,因为import Tkinter
会失败。
以下是一些实际上对Python2 和 Python3都有效的代码:
try:
import Tkinter as tk
import tkMessageBox as mb
except ImportError:
import tkinter as tk
import tkinter.messagebox as mb
##############
root = tk.Tk()
root.geometry("500x300")
###############
# Label asking what drink
tk.Label(root, text="What drink would you like?", bg="goldenrod", font="bold").pack()
# white space
tk.Label(root, text="").pack()
#Choices
tk.Label(root, text="Whichever choice you want, simply press the buton!").pack()
# Apple juice button
def apple_juice():
mb.showinfo('showinfo', "You've chosen apple juice!")
tk.Button(root, text="Apple Juice", bg="SkyBlue1", command=apple_juice).pack()
root.mainloop()