2010-10-22 11 views
5

Ho un dispositivo di scorrimento e voglio chiamare una funzione specifica solo quando l'interazione è completa. L'idea è di chiamare una funzione dopo 500 ms (e non prima). Se il cursore continua a muoversi, la chiamata viene annullata. In altre parole, se il cursore "riposa" per più di 500 ms, la funzione è chiamata.Come posso chiamare una funzione con ritardo in python?

Grazie

Aggiornamento

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

risposta

2

Patrick: Vedere questa discussione - How to create a timer using tkinter?

È possibile utilizzare Threading.Timer per fare questo. Ha un metodo cancel che puoi usare per cancellarlo prima che venga eseguito.

+1

Quando si interagisce con una libreria GUI (che è come appare), probabilmente non si desidera utilizzare un thread. Usa timer per finestre. Non verranno eseguiti in una discussione in modo che non presentino problemi di threading; al contrario, vengono eseguiti in un punto predefinito a seconda del sistema. Questi sono diversi in diverse librerie GUI, ma sono una caratteristica standard. Ad esempio, in Win32 è "SetTimer()" e il messaggio WM_TIMER. –

+0

@aaronasterling Viene visualizzato il seguente messaggio di errore: raise RuntimeError ("thread already started") (Ho aggiornato la domanda con il mio codice) – aneuryzm

+0

@Glenn Grazie per averlo indicato. La metti come risposta in modo che possa essere accettata? Lascerò questa risposta come una lezione di oggetti. – aaronasterling

Problemi correlati