2013-06-21 21 views
5

Chcę powiązać sekwencję Control + 1 z oknem. widget.bind("<Control-1>", lambda event: someFunction(event)) wiąże Sterowanie + kliknięcie lewym przyciskiem myszy. Jest to fragment mojego kodu, które będą korzystać z tego:Wiązanie kontrolne + liczba Tkinter

self.master.bind("<Control-1>", lambda event: self.allTypeButtons[1].invoke()) 
self.master.bind("<Control-2>", lambda event: self.allTypeButtons[2].invoke()) 
self.master.bind("<Control-3>", lambda event: self.allTypeButtons[3].invoke()) 
# self.allTypeButtons is a dictionary with Radiobuttons as its values 

Próbowałem też self.master.bind("<Control>-1", lambda event: self.allTypeButtons[1].invoke()), ale to daje mi: _tkinter.TclError: bad event type or keysym "Control".

Ponadto, self.master.bind("Control-1", lambda event: self.allTypeButtons[1].invoke()), a następnie naciśnięcie klawisza Control + 1 nie wywoła zdarzenia.

wiem, że widget.bind("1", lambda event: someFunction(event)) wiąże , widget.bind("<1>", lambda event: someFunction(event)) wiąże Lewy przycisk myszki i widget.bind("<Control-h>", lambda event: someFunction(event)) wiąże Control + h, ale w jaki sposób mogę włączyć Control + 1? Z góry dziękuję.

Odpowiedz

6

Nazwa zdarzenia to <Control-Key-1>.

import Tkinter as tk 
def quit(event): 
    print("You pressed Control-Key-1") 
    root.quit() 

root = tk.Tk() 
root.bind('<Control-Key-1>', quit) 
root.mainloop() 

Opublikowałem tutaj partial table of event names.