我正在PyQt5中制作应用程序。我有这个窗口:
我想用来keyPressEvent拦截这个窗口中的所有击键。我拦截了大多数击键,但是当您按下小键盘上的箭头时,此方法不起作用,因为它不被视为按键事件,而是其他一些突出显示按钮的事件。
图片显示该按钮以虚线突出显示:
如果按钮被移除,那么所有的键都被正确拦截。
我怎样才能解决这个问题并拦截所有击键?
from PyQt5.QtWidgets import *
import sys
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.resize(430, 130)
self.label = QLabel(self)
self.label.setText('Нажмите на клавиатуре нужное вам сочетание клавиш')
self.label.resize(400, 50)
self.label.move(10, 10)
self.button = QPushButton(self)
self.button.setText('Создать сочетание клавиш')
self.button.resize(400, 50)
self.button.move(10, 50)
def keyPressEvent(self, event):
print('press')
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())


更多https://doc.qt.io/qt-5/qwidget.html#focusPolicy-prop