在PYQT4中捕获密钥

时间:2015-09-22 19:51:50

标签: python events widget key pyqt4

我正在尝试捕获我的程序中按下的所有键

def keyPressEvent(self, event):

    event = event.key()

    if (event == QtCore.Qt.Key_Q):
        print ('Q!.')

当我尝试在窗口中捕获键时,该功能正常工作。 (在这种情况下是Q_Key)

但是如果在Text Widget中按下了键(例如在:QListView,QlistWidget,QLineEdit等等),它就不起作用了。该功能不打印。我做错了什么...... 我该怎么做才能解决它?

谢谢,对不起我的英文!

1 个答案:

答案 0 :(得分:3)

您需要在应用程序上安装事件过滤器以获取所有按键事件:

class Window(QtGui.QWidget):
    def __init__(self):
        ...
        QtGui.qApp.installEventFilter(self)

    def eventFilter(self, source, event):
        if event.type() == QtCore.QEvent.KeyPress:
            print('KeyPress: %s [%r]' % (event.key(), source))
        return super(Window, self).eventFilter(source, event)