Le 19/1/2009, "Mark Summerfield" <[email protected]> a écrit:
>I suspect that using grabKeyboard()/releaseKeyboard() is not the right >approach---for example, I've never seen them used in practice and have >never used them myself. > >PyQt has an event handling hierarchy, and IMO it is best to start with >the least powerful approach and work up 'til you get what you need. > >So if you want to catch particular keys you could create a QShortcut for >each key sequence in the main window's __init__ and connect each >shortcut to a method. > >If that isn't sufficient, then you could try reimplementing >keyPressEvent()---and to propagate key event you don't want to handle >yourself just call the base class version with the arguments you >received. (And of course see David's reply.) > >If you want more control than that you could reimplement event(), or you >could add one or more eventFilters() (but never use many of them since >they can hurt performance). And that's not quite all. Keep in mind that >PyQt is _different_ from Gtk so IMO it is best to find the PyQt-ish >approach rather than to attempt a straight conversion from Gtk to PyQt >code. I totally agree that mimic PyGTK is not very efficient. In fact, I'm porting my app to Qt this way to quickly have something running, and test all other problems (packaging, and so). Then, I plan to redesign it, and use all Qt great features. Even if using grabKeyboard()/releaseKeyboard() in a few points works really great, exactly how I want, I will try QShortcut... About keyPressEvent, I'm using it, and it works (thanks to David), except that the repeat sends press followed by release events, and I really need to only get the press event when the key is pressed, and the release one when it is released. I didn't find yet a way to do that. At which level this feature is implemented, so I can try to change it? Should I go down to the event() callback? -- Frédéric _______________________________________________ PyQt mailing list [email protected] http://www.riverbankcomputing.com/mailman/listinfo/pyqt
