使用Schedule运行while循环时,Tkinter GUI挂起

时间:2019-02-04 15:44:02

标签: python user-interface tkinter schedule

我在GUI上有一个按钮来启动一个具有while循环的进程,因为它的Schedule是基于时间的。但是,一旦单击该按钮,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..."))

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

1 个答案:

答案 0 :(得分:0)

您不应使用这样的无限循环。而是使用after来按时间表呼叫run_pending

例如,如果您想每三十秒轮询一次未决事件,它可能看起来像这样:

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)