Kluczowe wejście to predefiniowane zdarzenie. Możesz przechwytywać zdarzenia, dołączając event_sequence
(s) do event_handle
(s), używając jednej lub wielu istniejących metod wiązania (bind
, bind_class
, tag_bind
, bind_all
). W tym celu należy:
- zdefiniować
event_handle
metodę
- odebrać zdarzenie (
event_sequence
), który pasuje do Twojego sprawę od an events list
Kiedy zdarzenie nastąpi, wszystkie z tych metod wiążących niejawnie wywołuje Metoda event_handle
podczas przekazywania obiektu Event
, która zawiera informacje o specyfice zdarzenia, które miało miejsce, jako argument.
Aby wykryć kluczowe wejście, można najpierw złapać wszystkie zdarzenia '<KeyPress>'
lub '<KeyRelease>'
, a następnie dowiedzieć się, jaki konkretny klucz jest używany przy korzystaniu z atrybutu event.keysym
.
Poniżej znajduje się przykład za pomocą bind
złapać obie '<KeyPress>'
i '<KeyRelease>'
wydarzenia na danym widget (root
):
try: # In order to be able to import tkinter for
import tkinter as tk # either in python 2 or in python 3
except ImportError:
import Tkinter as tk
def event_handle(event):
# Replace the window's title with event.type: input key
root.title("{}: {}".format(str(event.type), event.keysym))
if __name__ == '__main__':
root = tk.Tk()
event_sequence = '<KeyPress>'
root.bind(event_sequence, event_handle)
root.bind('<KeyRelease>', event_handle)
root.mainloop()
Czy używanie Tk wymagają graficznego okno? Pracuję nad systemem wbudowanym. sys.strin.read() poniżej jest kuszące, ale musisz nacisnąć enter. – user391339
@ user391339: Myślę, że Tk wymagałby systemu okien lub wirtualnego wyświetlacza. W przypadku systemu wbudowanego przepis 'getch', taki jak [this one] (http://stackoverflow.com/a/21659588/190597) może być lepszy. – unutbu
Należy zauważyć, że działa to tylko w języku Python 3.x –