2010-10-22 63 views
5

我有一個滑塊,我只想在交互完成時調用特定的函數。這個想法是在500ms後(而不是之前)調用一個函數。如果滑塊繼續移動,則呼叫被取消。換句話說,如果滑塊「休息」超過500毫秒的功能是調用。如何在python中延遲調用函數?

感謝

更新

#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() 

回答

2

帕特里克:看到這個話題 - How to create a timer using tkinter?

您可以使用 Threading.Timer做到這一點。它有一個 cancel方法,您可以在運行之前使用它來取消它。

+1

當與GUI庫交互(這是什麼這聽起來像),你可能不希望使用一個線程。使用窗口定時器。他們不會在一個線程中運行,所以他們不會引入線程問題;相反,它們在某個預定義點運行,具體取決於系統。這些在不同的GUI庫中是不同的,但它們是標準功能。例如,在Win32中它是SetTimer()和WM_TIMER消息。 – 2010-10-22 11:20:41

+0

@aaronasterling我收到以下錯誤信息:提高RuntimeError(「已啓動線程」)(我已經更新了我的代碼的問題) – aneuryzm 2010-10-22 11:25:14

+0

@Glenn感謝您指出了這一點。你會把它作爲答案,以便它可以被接受嗎?我將這個答案留作實物課。 – aaronasterling 2010-10-22 11:26:10