麻烦root.after

时间:2018-08-15 02:46:48

标签: python python-3.x tkinter

我正在tkinter中制作一个GUI应用程序,我需要一个函数中的代码才能每60秒运行一次。我尝试使用root.after(root, function)暂停,但是使用此暂停时,我的GUI窗口冻结,并且当我中断root.mainloop()时,函数中的代码继续运行。这是我遇到问题的一些代码:

def start():
    global go
    go=1
    while go == 1:
        getclass()
        root.after(1000,func=None)

def stop():
    global go
    go=0

def getclass():
    #my code here
    print("Hello World")

我只希望getclass()每按一次开始按钮即可运行60秒。然后,我希望在按下停止按钮时停止60秒循环。

预先感谢您, 肖恩

1 个答案:

答案 0 :(得分:0)

您太想这个了:所需的内容非常简单,也许像这样:

def start():           
    getclass()
    root.after(60000, start)    # <-- 60,000 milliseconds = 60 seconds

调用start()时,它将执行对getClass()的调用,然后设置一个回调函数,该回调函数将在60秒内再次调用自身。

展示使用情况的最小应用程序:

import tkinter as tk

def getclass():
    print('hello')

def start():           
    getclass()
    root.after(60000, start)    # <-- 60,000 milliseconds = 60 seconds

root = tk.Tk()
start()
root.mainloop()