MeanEYE
MeanEYE

Reputation: 967

PyGTK: Allow usage of Tab in AccelGroup

When using gtk.AccelGroup any combination with Tab charater is invalid. Now I do understand that UI navigation is done using this key but in some special cases I need to override that behavior. Is there a way to make AccelGroup allow usage of this key?

For example:

group = gtk.AccelGroup()
group.connect(gtk.gdk.keyval_from_name('Tab'), gtk.gdk.CONTROL_MASK, 0, callback)

Upvotes: 3

Views: 544

Answers (2)

Query1
Query1

Reputation: 23

This below is one way to do it. Although if you don't wish for the program to listen for every keypress as you stated above, I should say that I've never run across a way of tying Tab to an AccelGroup. I've tried various things myself, but to no avail.

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()

Upvotes: 1

Louis
Louis

Reputation: 2890

You can easily get key names and values with this :

 #!/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()

But I found that the keynames returned were locale-dependent, of no great use for me. The keyval can probably be used. Cheers, Louis

Upvotes: 1

Related Questions