2010-01-27 12 views
6

मुझे कुंजी-प्रेस-ईवेंट हैंडलर मिला है और मुझे यह निर्धारित करने की आवश्यकता है कि किस प्रकार की कुंजी दबाई गई थी: संशोधक या नहीं?pygtk: कुंजी निर्धारित करें एक संशोधक

यह घटना में नहीं है। स्टेट, क्योंकि यह फ़ील्ड केवल तभी काम करता है जब संशोधक को किसी और चीज़ के साथ दबाया जाता है, लेकिन मुझे इसे एक कुंजी के लिए चाहिए (यानी बस नियंत्रण या alt दबाकर ...)।

उत्तर

4

जीटीके +/PyGTK के अपने संस्करण सबसे नया है, तो महत्वपूर्ण घटनाओं एक is_modifier विशेषता है। यह पीईजीटीके संदर्भ में दस्तावेज नहीं है, लेकिन यह जीडीके एपीआई दस्तावेज में है और पीईजीटीके के माध्यम से खुलासा किया गया है। इसे जीडीके 2.10 में जोड़ा गया था।

2

आप जो भी खोज रहे हैं उसे आप पाएंगे .keyval। उदाहरण के लिए, निम्नलिखित कोड मेरे लिए काम करता है:

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

मैं तुम क्या दिखाया है की तरह कुछ मिल गया है, लेकिन बहुत बड़ा: संशोधक = ( gtk.keysyms.Control_L, ..... gtk.keysyms.Hyper_L, gtk.keysyms.Hyper_R , gtk.keysyms.Meta_L, gtk.keysyms.Meta_R, ) .... अगर संशोधक में event.keyval: .... लेकिन मैंने सोचा कि कुछ एक और दृष्टिकोण हो सकता है – Daniel

संबंधित मुद्दे