2016-04-04 21 views
0

Ich möchte meinen rekursiven Timer stoppen. Die Verwendung von tick als Argument für after_cancel funktioniert nicht. Wenn ich "nach # 2" verwende, drücke ich zur richtigen Zeit Return.Tkinter root.after_cancel

Was fehlt mir hier bitte?

from Tkinter import * 
root = Tk()    

root.title("Tick")  
root.geometry("320x400") 

def tick():     
    print ("tick!")   
    print root.after(1000, tick) 

def key_pressed(event): 
    if event.keysym == "Return": 
     root.after_cancel(tick) 

root.bind("<Key>", key_pressed) 
root.after(1000, tick) 
mainloop() 

Antwort

1

Sie müssen die Nach-Referenz übergeben. Hier ist eine kurze Bearbeitung, um das zu zeigen.

from tkinter import * 
root = Tk()    

root.title("Tick")  
root.geometry("320x400") 

AFTER = None 
def tick():     
    print ("tick!")   
    global AFTER 
    AFTER = root.after(1000, tick) 

def key_pressed(event): 
    if event.keysym == "Return": 
     root.after_cancel(AFTER) 

root.bind("<Key>", key_pressed) 
root.after(1000, tick) 
mainloop()