如何使QPushButton不被Enter键盘键触发

How to make QPushButton not to be triggered by Enter keyboard key

下面的代码创建了一个带有 5 个按钮的对话框 window。每个按钮都连接到 onClick 功能。如果我按下 'Enter' 键盘键,将触发其中一个按钮并执行 onClick 功能。

如何更改按钮属性,使按钮仅在单击时调用 onClick 功能而不响应 Enter 键盘键?

from PyQt4 import QtGui 

def onClick():
    print 'button clicked'

dialog = QtGui.QDialog()
dialog.setLayout(QtGui.QVBoxLayout())
for i in range(5):
    btn = QtGui.QPushButton('Button %03d'%i)
    btn.clicked.connect(onClick)
    dialog.layout().addWidget(btn)
dialog.show()

QPushButtonsdefaultautoDefault 属性 设置为 False。例如

btn = QtGui.QPushButton('Button %03d'%i, default=False, autoDefault=False)

您观察到的是 QDialog 对触发默认 'dialog action' 的回车键的特殊处理(这是使用 QDialog 时的常见问题)。