Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中如何调用延迟函数?_Python - Fatal编程技术网

在python中如何调用延迟函数?

在python中如何调用延迟函数?,python,Python,我有一个滑块,我只想在交互完成时调用特定的函数。其思想是在500毫秒之后(而不是之前)调用函数。如果滑块继续移动,则通话取消。换句话说,如果滑块“静止”超过500毫秒,则函数将被调用 谢谢 更新 #slider def updateValue(self): #self._job = None #self.preview.updateContourValue(float(self.slider.get() )) print "upd

我有一个滑块,我只想在交互完成时调用特定的函数。其思想是在500毫秒之后(而不是之前)调用函数。如果滑块继续移动,则通话取消。换句话说,如果滑块“静止”超过500毫秒,则函数将被调用

谢谢

更新

    #slider

    def updateValue(self):
        #self._job = None
        #self.preview.updateContourValue(float(self.slider.get() ))
        print "updated value"

    timer = Timer(5.0, updateValue)

    def sliderCallback(self):
        timer.cancel()
        timer.start()

帕特里克:看到这条线了吗


你可以用它来做这件事。它有一个
cancel
方法,您可以在它运行之前使用它来取消它。

当与GUI库交互时(这听起来像),您可能不想使用线程。使用窗口定时器。它们不会在线程中运行,因此不会引入线程问题;相反,它们会根据系统在某个预定义点运行。这些在不同的GUI库中是不同的,但它们是一个标准特性。例如,在Win32中,它是
SetTimer()
和WM_TIMER消息。@aaronastering我收到以下错误消息:raise RUNTIMERROR(“线程已启动”)(我用我的代码更新了问题)@Glenn感谢您指出这一点。你能把它作为一个答案,以便它能被接受吗?我将把这个答案留作对象课程。@Patrick,您将得到运行时错误,因为您只能调用
start
一次。取消后,您需要重新开始,但请参见Glenn的评论。如果他给出了答案,你应该接受这一点。@aaronasterling只是为了理解。。。那么使用start()方法有什么意义呢?我应该每次都创建一个新的计时器对象吗?