您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何创建Tkinter GUI停止按钮以打破无限循环?

如何创建Tkinter GUI停止按钮以打破无限循环?

您不能while True:在Tkinter事件循环所处的同一线程中启动循环。这样做将阻塞Tkinter的循环并导致程序冻结。

对于一个简单的解决方案,您可以Tk.after每秒钟左右在后台运行一个进程。下面是一个脚本来演示:

from Tkinter import *

running = True  # Global flag

def scanning():
    if running:  # Only do this if the Stop button has not been clicked
        print "hello"

    # After 1 second, call scanning again (create a recursive loop)
    root.after(1000, scanning)

def start():
    """Enable scanning by setting the global flag to True."""
    global running
    running = True

def stop():
    """Stop scanning by setting the global flag to False."""
    global running
    running = False

root = Tk()
root.title("Title")
root.geometry("500x500")

app = Frame(root)
app.grid()

start = Button(app, text="Start Scan", command=start)
stop = Button(app, text="Stop", command=stop)

start.grid()
stop.grid()

root.after(1000, scanning)  # After 1 second, call scanning
root.mainloop()

当然,您可能希望将此代码重构为一个类并running成为其属性。另外,如果您的程序变得很复杂,那么研究Python的threading模块将是有益的,这样您的scanning函数可以在单独的线程中执行。

其他 2022/1/1 18:33:57 有349人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶