python - 如何阻止空格键在 PyQt5 中触发聚焦的 QPushButton?

标签 python python-3.x pyqt5

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

最佳答案

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

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())

关于python - 如何阻止空格键在 PyQt5 中触发聚焦的 QPushButton?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63540492/

相关文章:

python - 根据列名对 Pandas 数据框中的列进行排序

python - 检测源代码中的 SQL 注入(inject)

python - 如何找到一个列表的元素在另一个列表中出现的次数?

python - 访问张量中各个元素的更好方法

python - 如何使用 python 生成二维码并在扫描时使其打开定义的 url?

python - 可以在白色文本上添加黑色边框吗?

python - 设置小部件的相同实例不起作用

python - 在Python中批量插入MySQL

python - Django Rest 框架 - 解析 post() 中的键值对

python - PyQt5 QListView拖放创建新的隐藏项