Sterowanie klawiaturą z pomocą Tkinter key events
Rozwijając swoje projekty dochodzimy do momentu kiedy chcemy móc sterować nimi za pomocą klawiatury komputera. Jest to możliwe m.in. dzięki bibliotece Tkinter, która obsługuje tzw. key event'y czyli zdarzenia na klawiaturze.
Nie ma tu zbyt dużej filozofii, trzeba tylko umiejętnie wkomponować poniższy kod do naszego programu.
import Tkinter as tk # importujemy bibliotekę Tkinter
def keycodess(event): # funkcja do rozpoznawania klawiszy
if event.keysym == 'Escape': # w przypadku naciśnięcia Escpae, program się wyłącza
root.destroy()
if event.keysym == 'Up': # rozpoznanie strzałki do góry
print 'góra'
elif event.keysym == 'Down':
print 'doł'
elif event.keysym == 'Left':
print 'lewo'
elif event.keysym == 'Right':
print 'prawo'
x=event.char # zapisanie do zmiennej x znaku przypisanego do dowolnego klawisza
if x == 'a':
print 'litera a'
elif x == 'b':
print 'litera b'
elif x == '1':
print 'cyfra 1'
root=tk.Tk()
root.bind_all('Key>',keycodess)
root.mainloop()
W przedostatniej linijce kodu brakuje otwarcia nawiasu trójkątnego przed słowem Key. Niestety uzupełniając ten nawias, słowo Key znikało z kodu, traktujac je jako jakąś wewnętrzną komendę.
A teraz kod, ktróy rozróżnia przyciśnięcie i puszczenie klawisza.
import Tkinter as tk
def keyPressed(event):
if event.keysym == 'Up':
print 'nacisnieto strzalke do gory'
if event.keysym == 'Down':
print 'nacisnieto strzalke w dół'
def keyReleased(event):
print ' puszczono klawisz'
root=tk.Tk()
print 'nacisnij'
root.bind_all('Key>',keyPressed) # przed slowem Key należy otworzyć nawias trójkątny
root.bind_all('KeyRelease>',keyReleased) # przed slowem KeyRelease należy otworzyć nawias trójkątny
root.mainloop()
I to tyle. Jak pisałem powyżej, trzeba jedynie umiejętnie to wkomponować do waszego kodu.