我正在尝试捕获我的程序中按下的所有键
def keyPressEvent(self, event):
event = event.key()
if (event == QtCore.Qt.Key_Q):
print ('Q!.')
当我尝试在窗口中捕获键时,该功能正常工作。 (在这种情况下是Q_Key)
但是如果在Text Widget中按下了键(例如在:QListView,QlistWidget,QLineEdit等等),它就不起作用了。该功能不打印。我做错了什么...... 我该怎么做才能解决它?
谢谢,对不起我的英文!
答案 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)