首页 > 解决方案 > 如何阻止空格键在 PyQt5 中触发聚焦的 QPushButton?

问题描述

space按键被按下时,我希望按钮不触发;我该如何实现该功能?我找到了一个类似的帖子,但它是用编写的,我怎么能将它翻译成,但将它的行为修改为我想要的?

标签: pythonpython-3.xpyqt5

解决方案


如果您想要触发按钮的任何键盘事件,那么只需实现一个事件过滤器:

import sys
from PyQt5 import QtCore, QtWidgets


class Listener(QtCore.QObject):
    def __init__(self, button):
        super().__init__(button)
        self._button = button
        self.button.installEventFilter(self)

    @property
    def button(self):
        return self._button

    def eventFilter(self, obj, event):
        if obj is self.button and event.type() == QtCore.QEvent.KeyPress:
            return True
        return super().eventFilter(obj, event)


App = QtWidgets.QApplication(sys.argv)

w = QtWidgets.QWidget()
lay = QtWidgets.QVBoxLayout(w)
btn = QtWidgets.QPushButton()
lay.addWidget(btn)
w.show()

btn.clicked.connect(print)

listener = Listener(btn)

sys.exit(App.exec())

推荐阅读