Python 3 GUI在按钮点击时打开另一个GUI - 而不是开始

时间:2016-08-23 00:08:47

标签: python-3.x tkinter

提前感谢您的帮助。我写了一个简单的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()

1 个答案:

答案 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()