1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| import tkinter as Tk
# attention (self) est paramètre de la fonction locale
# mais il est utilisé comme "reférence" à l'instance:
# --- le self de self._tclCommands est "objet"...
def destroy(self):
if self._tclCommands is not None:
data = self.tk.splitlist(self.tk.call('after', 'info'))
for ident in data:
script, cls = self.tk.splitlist(
self.tk.call('after', 'info', ident))
if cls == 'timer' and script in self._tclCommands:
self.after_cancel(ident)
self.destroy()
# ne patchons plus Tk.Misc, il faut appeler "explictement" la fonction.
#Tk.Misc._destroy = Tk.Misc.destroy
#Tk.Misc.destroy = destroy
root = Tk.Tk()
val = Tk.IntVar()
print(root.after( 3, lambda: val.set(1)))
#print(root.after( 1, root.destroy))
print(root.after( 1, lambda: destroy(root)))
root.mainloop()
input() |