2010-01-27 15 views
6

Mam obsługę zdarzenia naciśnięcia klawisza i muszę określić, który rodzaj klawisza został naciśnięty: modyfikator czy nie?pygtk: określenie klucza jest modyfikatorem

Nie ma go w event.state, ponieważ to pole działa tylko wtedy, gdy został naciśnięty jakiś modyfikator z czymś innym, ale potrzebuję tego dla pojedynczego klawisza (tj. Po prostu naciśnięcie klawisza control lub alt, ...).

Odpowiedz

4

Jeśli wersja GTK +/PyGTK jest na tyle aktualne, najważniejsze wydarzenia mają atrybut is_modifier. Nie jest to udokumentowane w odnośniku PyGTK, ale jest w dokumentacji GDK API i jest eksponowane przez PyGTK. Został dodany w GDK 2.10.

2

Znajdziesz to, czego szukasz w event.keyval. Na przykład, następujący kod działa dla mnie:

def key_press_event(widget, event): 
    keyname = gtk.gdk.keyval_name(event.keyval) 
    if "Control" in keyname or "Alt" in keyname: 
     print "You pressed a modifier!" 
+0

Mam coś takiego, co już widać, ale znacznie większy: MODYFIKATORY = ( gtk.keysyms.Control_L, ..... gtk.keysyms.Hyper_L, gtk.keysyms.Hyper_R , gtk.keysyms.Meta_L, gtk.keysyms.Meta_R, ) .... jeśli event.keyval w modyfikatorów: .... ale pomyślałem, że może być trochę inne podejście – Daniel

Powiązane problemy