【问题标题】:mainloop() function in pythonpython中的mainloop()函数
【发布时间】:2025-12-14 07:15:01
【问题描述】:

我对将 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 True 循环。

【问题讨论】:

    标签: python loops tkinter


    【解决方案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,则程序将没有响应,因此请进行相应调整。

    【讨论】:

    • 感谢您的回复!,无论哪种方式,我都会将 mainloop()将它放在 mainFunct() 之外,那么标签只会在我输入“c”后打包。例如。 'code' mainFunct() root.mainloop() 'code' GUI界面只会在mainFunction之后弹出,但是当我想让mainFunction循环时如何打包?
    • 谢谢你,这正是我要找的!!