python中的mainloop()函数

时间:2015-06-13 23:39:45

标签: python loops tkinter

我对将mainloop函数放在python中的位置感到困惑。当我使用这段代码时:

from tkinter import *
import sys
window = Tk()
def mainFunct():
    while True:

        label = Label(window,text="Hello World")
        label2 = Label(window, text = "Hello World2")
        menu = input("Please input something")
        if menu == "a":
            label.pack()
        if menu == "b":
            label2.pack()
        if menu == "c":
            sys.exit()

        window.mainloop()
mainFunct()

我希望在用户输入a时打包标签,当用户输入b时,我希望打包label2。我不确定何时以及为何使用mainloop。现在当我运行程序时,GUi只在我输入内容后弹出,然后我甚至无法输入任何其他内容,我认为它与window.mainloop()函数有一些关系,因为它只是一遍又一遍地循环,而不是再次运行while循环。

1 个答案:

答案 0 :(得分:1)

我能够根据评论更好地理解你的问题。如果您正在寻找,请告诉我们:

import tkinter as tk

class HelloWorld(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.entry = tk.Entry(self)
        self.button = tk.Button(self, text="What's your input?", command=self.on_button)
        self.button.pack()
        self.entry.pack()

    def on_button(self):
        answer = self.entry.get()
        if answer == "a":
            print("Hello World")
        elif answer == "b":
            print("Hello World 2")
        elif answer == "c":
            root.destroy()

root = HelloWorld()
root.mainloop()

因此,在处理用户的输入时,最好创建一个类,然后从中获取/比较信息。

现在,如果答案不是abc,则该程序将不会有任何回复,因此请进行相应调整。