定时器,每隔n毫秒调用一个没有.after或线程的函数

时间:2015-06-12 10:31:13

标签: python timer tkinter

我需要一个每n毫秒调用一次函数的计时器。 这不应该是一个endloss循环(虽然是真的)或类似的东西

import threading

def printit():
   threading.Timer(5.0, printit).start()
   print "Hello, World!"

def printit():
    root.after(100,printit())

因为我有一个应该能够互动的GUI。这样我就可以停止计时器了。

一些想法? 谢谢!

2 个答案:

答案 0 :(得分:3)

你的问题明确表示不使用after,但这正是你使用tkinter的方式(假设你的函数完成时间不超过几百毫秒)。例如:

def printit():
    if not stopFlag:
        root.after(100,printit)
...
def stop():
    global stopFlag
    stopFlag = False
...
printit()

上述操作会导致printit每100毫秒调用一次,直到其他一些代码将stopFlag设置为False

注意:如果printit花费超过100毫秒,这将无法正常工作。如果函数需要两次时间,那么您唯一的选择是将函数移动到一个线程中,或者将其移动到另一个进程。如果printit需要100毫秒或更短时间,则上述代码足以让您的UI保持响应。

答案 1 :(得分:0)

来自Python Documentation

window.location.href="index.php?value=1";