2016-07-27 5 views
-1

Ich habe eine Schaltfläche, die zählt, wie oft Sie darauf geklickt haben. Ich möchte es auch mit Return/Enter-Taste arbeiten lassen. Hier ist mein CodeTkinter bind return/enter to a button

import Tkinter 
window=Tkinter.Tk() 
window.title("Clicks Counter") 
presses=0 
def addClick(self): 
    global presses 
    presses += 1 
    lbl.configure(text=presses) 
lbl=Tkinter.Label(window, text=presses) 
lbl.pack() 
btn=Tkinter.Button(window, text="Click Me", command=addClick) 
btn.config(font=('helvetic',40)) 
btn.pack(expand=True, fill='both') 
window.mainloop() 

Bitte vorschlagen, wie dies zu implementieren in der einfachsten Weise

Antwort

1

Ok, Dank @BryanOakley ‚s Kommentar. Die richtige Antwort wäre:

1 -> Auf der einen Seite können Sie alle Ereignisse setzen könnten (wie button als window Objekt) mit bind Methode, wäre es:

window.bind('<Return>', addClick) 
window.bind('<BackSpace>', addClick) 
btn.bind('<Button-1>', addClick) 

Und addClick Methode wäre, :

def addClick(event): 
    global presses 
    presses += 1 
    lbl.configure(text=presses) 

Code of erste Option:

import Tkinter 
window=Tkinter.Tk() 
window.title("Clicks Counter") 

presses=0 

def addClick(event): # Change this line! 
    global presses 
    presses += 1 
    lbl.configure(text=presses) 

window.bind('<Return>', addClick) # Change this line! 
window.bind('<BackSpace>', addClick) # Change this line! 

lbl=Tkinter.Label(window, text=presses) 
lbl.pack() 
btn=Tkinter.Button(window, text="Click Me") 
btn.config(font=('helvetic',40)) 
btn.pack(expand=True, fill='both') 

btn.bind('<Button-1>', addClick) # Change this line! 

window.mainloop() 

2 -> Andererseits könnten Sie die Methode addClick ändern, indem Sie ein optionales Argument wie @BryanOakley hinzufügen. Dann würden Sie den dritten Parameter (command) von Tkinter.Button() nicht ändern. Es wäre:

def addClick(event=None): 
    global presses 
    presses += 1 
    lbl.configure(text=presses) 

window.bind('<Return>', addClick) 
window.bind('<BackSpace>', addClick) 

Code of zweite Option:

import Tkinter 
window=Tkinter.Tk() 
window.title("Clicks Counter") 
presses=0 

def addClick(event=None): # Change this line! 
    global presses 
    presses += 1 
    lbl.configure(text=presses) 

window.bind('<Return>', addClick) # Change this line! 
window.bind('<BackSpace>', addClick) # Change this line! 

lbl=Tkinter.Label(window, text=presses) 
lbl.pack() 
btn=Tkinter.Button(window, text="Click Me", command=addClick) 
btn.config(font=('helvetic',40)) 
btn.pack(expand=True, fill='both') 
window.mainloop() 

Ich hoffe, dass es ist, dass Sie wollten, und dank @BryanOakley wieder: D

+1

Da Bindungen ein 'event' Argument übergeben Für den Rückruf muss 'addClick' modifiziert werden, um diesen Parameter zu akzeptieren. Da die Funktion auch für einen Tastenrückruf verwendet wird, muss der Ereignisparameter optional sein. –

+0

Danke @BryanOakley von dieser Information, es war hilfreich :-) –

+1

eine bessere Vorgabe wäre 'event = None'. –