Tkinter GUI 在使用计划循环时挂起



我的GUI上有一个按钮,可以启动一个具有while循环的进程,因为它是一个基于时间工作的时间表。但是,单击按钮后,GUI将挂起,但实际程序仍在后台运行。

def start(root, period=0):
    schedule.every(float(delay)).hours.do(start)
    while True:
        schedule.run_pending()
        root.after(30000, print("WAITING 30 SECONDS..."))

我希望能够在后台循环进行时继续使用菜单。

你不应该使用这样的无限循环。相反,请使用after按计划呼叫run_pending

例如,如果要每 30 秒轮询一次挂起的事件,它可能如下所示:

def start(root, period=0):
    schedule.every(float(delay)).hours.do(start))
    poll_schedule(schedule)
def poll_schedule(root, schedule)
    schedule.run_pending()
    print("WAITING 30 SECONDS...")
    root.after(30000, poll_schedule, root, schedule)

最新更新