[pygtk] AccelGroup and Up/Down/Left/Right keys

Pierre nbytes at online.fr
Fri Jun 19 14:52:44 WST 2009


Hi list,

I was wondering if it's possible to use the 'Up', 'Down', 'Left', and
'Right' keys as accelerators in AccelGroup.

I'm led to believe one can't, as the short snippet below fails to call
the blop() method when 'Up' is pressed, whereas pressing 'b' does
succesfully call blip().

Is there any workaround ?

Thanks for your time,

- Pierre


# Here's the code.

import gtk

class CustomWindow(gtk.Window):

     def __init__(self):
         gtk.Window.__init__(self)
         self.uimanager = self._make_ui_manager()
         accelgroup = self.uimanager.get_accel_group()
         self.add_accel_group(accelgroup)
         self.drawing_area = gtk.DrawingArea()
         self.add(self.drawing_area)
         self.connect("delete-event", gtk.main_quit)
         self.show_all()

     def _make_ui_manager(self):
         ui = '''\
             <ui>
                 <accelerator action='Blip'/>
                 <accelerator action='Blop'/>
             </ui>'''
         uimanager = gtk.UIManager()
         uimanager.add_ui_from_string(ui)
         actions = [('Blip', None, None, 'b', '', self.blip),
                    ('Blop', None, None, 'Up', '', self.blop)]
         actiongroup = gtk.ActionGroup('')
         actiongroup.add_actions(actions)
         uimanager.insert_action_group(actiongroup, 0)
         return uimanager

     def blip(self, *args):
         print 'Blip!'

     def blop(self, *args):
         print 'Blop!'


win = CustomWindow()
win.resize(300, 300)
gtk.main()





More information about the pygtk mailing list