Hi,

Not sure whether this is a pygtk or a gtk issue, but...

I've written an app which relies on key-press and key-release events. Under windows XP, python 2.6, pygtk 2.16 and gtk+ 2.18 there are no problems, however under ubuntu 9.10 (32 & 64bit) I'm seeing a key-release event following each key-press event whilst a key is held down.

I've attached a small test case to demonstrate.

I've been scratching my head over this one for a while & can't figure it out...

TIA,

Andy


#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
import os
import sys

#gtk
import pygtk
if sys.platform != 'win32':
    pygtk.require('2.0')
import gtk
import gobject


class WinTest:
    """Main Window"""

    def __init__(self):
        """test"""
        #build the window
        self.winMain = gtk.Window()
        #set window properties
        self.winMain.set_events(
            gtk.gdk.KEY_PRESS_MASK |
            gtk.gdk.KEY_RELEASE_MASK)
        print "events=",self.winMain.get_events()
        self.winMain.connect('key-press-event', self.on_winMain_key_press)
        self.winMain.connect('key-release-event', self.on_winMain_key_press)
        self.winMain.connect('delete-event', self.on_winMain_delete_event)
        self.winMain.set_size_request(300, 400)
        self.winMain.show()

    def on_winMain_key_press(self, widget, event, *args):
        """handle keyboard events"""
        keyname = gtk.gdk.keyval_name(event.keyval).upper()
        if event.type == gtk.gdk.KEY_PRESS:
            if keyname == 'ESCAPE':
                self.on_winMain_delete_event()
            else:
                print "key press=", keyname
        elif event.type == gtk.gdk.KEY_RELEASE:
            print "key release=", keyname
        return False

    def on_winMain_delete_event(self, *args):
        """done, quit the application"""
        #exit gtk loop
        gtk.main_quit()
        return False


if __name__ == '__main__':
    #instantiate main GUI window class
    app = WinTest()
    #and... go...
    gtk.main()
_______________________________________________
pygtk mailing list   [email protected]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://faq.pygtk.org/

Reply via email to