Non è possibile.
Ciò che si può fare è che il comando può ritardare qualsiasi lavoro reale per un breve periodo di tempo utilizzando 'dopo'. Ogni volta che viene richiamato il comando, annullare qualsiasi lavoro in sospeso e riprogrammare il lavoro. A seconda di quali sono i tuoi requisiti effettivi, un ritardo di mezzo secondo potrebbe essere sufficiente.
Un'altra scelta è quella di non utilizzare la funzione di comando integrata e utilizzare invece i collegamenti personalizzati. Questo può essere molto impegnativo per avere esattamente ragione, ma se hai davvero bisogno di un controllo a grana fine puoi farlo. Non dimenticare che si può interagire con il widget usando la tastiera oltre al mouse.
Ecco un breve esempio che mostra come pianificare il lavoro da fare in mezzo secondo:
import Tkinter as tk
#create window & frames
class App:
def __init__(self):
self.root = tk.Tk()
self._job = None
self.slider = tk.Scale(self.root, from_=0, to=256,
orient="horizontal",
command=self.updateValue)
self.slider.pack()
self.root.mainloop()
def updateValue(self, event):
if self._job:
self.root.after_cancel(self._job)
self._job = self.root.after(500, self._do_something)
def _do_something(self):
self._job = None
print "new value:", self.slider.get()
app=App()
fonte
2010-10-19 12:53:22
Ok, qual è il modo migliore per ottenere un ritardo di 0,5? – aneuryzm
@Patric: ho modificato la risposta per includere un esempio –
Grazie, ho ricevuto questo errore: AttributeError: l'oggetto 'str' non ha attributo '_job' – aneuryzm