2010-01-27 24 views
6

Tuşa basma olay işleyicisi var ve hangi tuşa basıldığını belirlemem gerekiyor: değiştirici mi, değil mi?pygtk: anahtarın bir düzenleyici olduğunu belirleme

Bu durum event.state'de değil, çünkü bu alan yalnızca değiştirici başka bir şeyle basıldığında çalışır, ancak tek anahtar için buna ihtiyacım var (diğer bir deyişle, yalnızca control veya alt, ...).

cevap

4

, anahtar olaylar is_modifier nitelik. PyGTK referansında belgelenmemiştir, ancak GDK API dokümantasyonundadır ve PyGTK üzerinden gösterilmektedir. GDK 2.10'a eklendi.

2

Aradığınızı event.keyval'de bulabilirsiniz. Örneğin, aşağıdaki kod benim için çalışıyor: GTK +/PyGTK sürümü yeterince yeni ise

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

i çizdiğim gibi bir şey var, ama çok daha büyük: değiştiriciler = ( gtk.keysyms.Control_L, ..... gtk.keysyms.Hyper_L, gtk.keysyms.Hyper_R , gtk.keysyms.Meta_L, gtk.keysyms.Meta_R, ) .... Değiştiricilerdeki event.keyval eğer: ama düşünce .... bazı başka yaklaşım olabilir – Daniel

İlgili konular