[PyQt] Keyboard shortcuts not working
Ulrich Berning
ulrich.berning at denviso.de
Fri Apr 11 08:06:41 BST 2008
Karlo Lozovina wrote:
>Hi guys!
>
>I'm trying to add keyboard shortcuts to my application, but I'm stuck
>at the beginning. Here is a simple application that I can't get to
>work:
>
>###
>import sys
>from PyQt4.Qt import Qt
>from PyQt4.QtCore import QObject, SIGNAL
>from PyQt4.QtGui import QWidget, QApplication, QMainWindow, QAction,
>QIcon, QKeySequence
>
>class MainWindow(QMainWindow):
> def __init__(self, parent):
> QMainWindow.__init__(self, parent)
> self.centralwidget = QWidget(self)
>
> self.action = QAction(QIcon(), "Down", self)
> self.action.setShortcut("Ctrl+D")
> self.action.setShortcutContext(Qt.ApplicationShortcut)
>
> QObject.connect(self.action, SIGNAL("triggered()"), self.down)
>
> def down(self):
> print 'DOWN!!!'
>
>def main():
> app = QApplication(sys.argv)
> mw = MainWindow(None)
> mw.show()
> sys.exit(app.exec_())
>
>if __name__ == '__main__':
> main()
>###
>
>I've tried using different shortcut context: WindowShortcut,
>WidgetShortcut, ApplicationShortcut, but it still doesn't work.
>
>Any help greately appreciated.
>
>
>
From the docs:
"Actions are added to widgets using QWidget::addAction(). Note that an
action must be added to a widget before it can be used; this is also
true when the shortcut should be global (i.e., Qt::ApplicationShortcut
as Qt::ShortcutContext)."
Add the line
self.addAction(self.action)
and it works.
Ulli
More information about the PyQt
mailing list