PyGTK: 允许在AccelGroup中使用Tab键
在使用gtk.AccelGroup的时候,任何和Tab键组合的快捷键都是无效的。我明白这个键是用来在界面中导航的,但在某些特殊情况下,我需要改变这个行为。有没有办法让AccelGroup允许使用这个键呢?
例如:
group = gtk.AccelGroup()
group.connect(gtk.gdk.keyval_from_name('Tab'), gtk.gdk.CONTROL_MASK, 0, callback)
2 个回答
1
下面是一种实现方法。不过,如果你不想让程序监听每一次按键,就像你之前说的那样,我得说我从来没有找到过把Tab键和AccelGroup绑定在一起的方法。我自己尝试过很多种方法,但都没有成功。
widget.connect("key-press-event",self.on_key_pressed)
def on_key_pressed(self,widget,event,*args):
if event.keyval == gtk.keysyms.Tab:
do_something()
1
你可以很简单地用这个方法获取键名和对应的值:
#!/usr/bin/env python
import gtk
import gtk
def catch_button(window, event, label):
keyval = event.keyval
name = gtk.gdk.keyval_name(keyval)
mod = gtk.accelerator_get_label(keyval, event.state)
label.set_markup('<span size="xx-large">%s\n%d</span>'% (mod, keyval))
window = gtk.Window()
window.set_size_request(640,480)
label = gtk.Label()
label.set_use_markup(True)
window.connect('key-press-event',catch_button, label)
window.connect('destroy', gtk.main_quit)
window.add(label)
window.show_all()
gtk.main()
不过我发现返回的键名是和地区有关的,对我来说没什么用。键值可能会有用。
谢谢,
路易斯