在PyQt5中,按钮(QPushButton)的默认行为是,当它获得焦点并且用户按下Enter键时,会触发点击事件。如果想要取消这个行为,有以下三种方法。
方法一、重写按钮的KeyPressEvent方法。
from PyQt5.QtWidgets import QApplication, QPushButton, QWidget
from PyQt5.QtCore import Qt
import sys
class Button(QPushButton):
def __init__(self, title, parent):
super().__init__(title, parent)
def keyPressEvent(self, event):
if event.key() == Qt.Key_Enter or event.key() == Qt.Key_Return:
return
super().keyPressEvent(event)
class App(QWidget):
def __init__(self):
super().__init__()
self.button = Button('Button', self)
self.button.move(50, 50)
self.setGeometry(300, 300, 300, 200)
app = QApplication(sys.argv)
ex = App()
ex.show()
sys.exit(app.exec_())
在这个例子中,我们创建了一个新的按钮类 Button,它继承自 QPushButton。我们重写了 keyPressEvent 方法,使得当按下 Enter 键或 Return 键时,不会触发任何事件。其他的按键事件会按照默认的方式处理。
方法二、给应用程序或窗口类中安装一个事件过滤器,然后在 eventFilter