QDialog中QLineEdit小部件的奇怪行为,绑定按钮功能
Strange behavior of QLineEdit widgets in QDialog, binding button function
我是 pyqt 编程的新手,所以也许我对此有误,但我发现按下 Enter 时的 self.lineEdit 调用按钮的功能,即使 self.handleKeyRelease 被注释。这是最少的代码,也是我发现奇怪行为的第一个地方。
self.lineEdit = QtGui.QLineEdit(self.frame)
# self.lineEdit.keyReleaseEvent = self.handleKeyRelease
self.pushButton = QtGui.QPushButton(self.frame)
self.pushButton.clicked.connect(lambda event: self._insertIntoCategories(db, self.lineEdit))
排在第二位的是动态制作的类似表单的小部件(有一个 LineEdit 和连续 3 个按钮)
self.lineEdit_2 = QtGui.QLineEdit(self.frame_3)
self.lineEdit_2.setText(item[1])
# ------------------------------------ block ------------------------------------------------- #
self.pushButton_4 = QtGui.QPushButton(self.frame_3)
self.pushButton_4.clicked.connect(lambda event, id=item[0], le=self.lineEdit_2: self.modal('edit', 'Are you sure you want to rename this category ?', id, le))
# ------------------------------------ block ------------------------------------------------- #
self.pushButton_3 = QtGui.QPushButton(self.frame_3)
self.pushButton_3.clicked.connect(lambda event, id=item[0]: self.__chIcon(id))
# ------------------------------------ block ------------------------------------------------- #
self.pushButton_2 = QtGui.QPushButton(self.frame_3)
self.pushButton_2.clicked.connect(lambda event, id=item[0], le=self.lineEdit_2: self.modal('delete', 'Are you sure you want to delete this category ?', id, le))
每个按钮都可以正常工作,但每次按下 Enter(或释放)时再次调用代码前一部分的功能(self.pushButton 的功能)self._insertIntoCategories 如果此代码还不够,如果需要,github 上有完整代码。
完全可执行的代码:
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_Form(object):
def setupUi(self):
self.Form = QtGui.QDialog()
Form = self.Form
Form.setObjectName(_fromUtf8("Form"))
Form.resize(504, 550)
self.verticalLayout = QtGui.QVBoxLayout(Form)
self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
self.frame = QtGui.QFrame(Form)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.frame.sizePolicy().hasHeightForWidth())
self.frame.setSizePolicy(sizePolicy)
self.frame.setMinimumSize(QtCore.QSize(0, 50))
self.frame.setStyleSheet(_fromUtf8("background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 green, stop:1 white);"))
self.frame.setFrameShape(QtGui.QFrame.StyledPanel)
self.frame.setFrameShadow(QtGui.QFrame.Raised)
self.frame.setObjectName(_fromUtf8("frame"))
self.horizontalLayout_2 = QtGui.QHBoxLayout(self.frame)
self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
self.horizontalLayout = QtGui.QHBoxLayout()
self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
# -------------- start of widget definitions -------------------------- #
# THIS IS FIRTS INPUT #
self.lineEdit = QtGui.QLineEdit(self.frame)
self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
self.horizontalLayout.addWidget(self.lineEdit)
# AND THIS IS FIRST BUTTON
self.pushButton = QtGui.QPushButton(self.frame)
self.pushButton.setMinimumSize(QtCore.QSize(50, 0))
self.pushButton.setStyleSheet(_fromUtf8("border-image: url(imgs/required/btns/add.png);background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 white, stop:1 white);"))
self.pushButton.setText(_fromUtf8(""))
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.pushButton.clicked.connect(lambda event: self.btnBehavior())
self.horizontalLayout.addWidget(self.pushButton)
# -------------- end of widget definitions -------------------------- #
self.horizontalLayout_2.addLayout(self.horizontalLayout)
self.verticalLayout.addWidget(self.frame)
self.frame_2 = QtGui.QFrame(Form)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.frame_2.sizePolicy().hasHeightForWidth())
self.frame_2.setSizePolicy(sizePolicy)
self.frame_2.setStyleSheet(_fromUtf8("background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 green, stop:1 white);"))
self.frame_2.setFrameShape(QtGui.QFrame.StyledPanel)
self.frame_2.setFrameShadow(QtGui.QFrame.Raised)
self.frame_2.setObjectName(_fromUtf8("frame_2"))
self.verticalLayout_2 = QtGui.QVBoxLayout(self.frame_2)
self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))
self.verticalLayout_3 = QtGui.QVBoxLayout()
self.verticalLayout_3.setObjectName(_fromUtf8("verticalLayout_3"))
self.frame_3 = QtGui.QFrame(self.frame_2)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.frame_3.sizePolicy().hasHeightForWidth())
self.frame_3.setSizePolicy(sizePolicy)
self.frame_3.setStyleSheet(_fromUtf8("background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 white, stop:1 green);"))
self.frame_3.setFrameShape(QtGui.QFrame.StyledPanel)
self.frame_3.setFrameShadow(QtGui.QFrame.Raised)
self.frame_3.setObjectName(_fromUtf8("frame_3"))
self.horizontalLayout_3 = QtGui.QHBoxLayout(self.frame_3)
self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3"))
# -------------- start of widget definitions, second row -------------------------- #
# THIS IS SECOND INPUT
self.lineEdit_2 = QtGui.QLineEdit(self.frame_3)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.lineEdit_2.sizePolicy().hasHeightForWidth())
self.lineEdit_2.setSizePolicy(sizePolicy)
self.lineEdit_2.setObjectName(_fromUtf8("lineEdit_2"))
self.horizontalLayout_3.addWidget(self.lineEdit_2)
#THIS IS SECOND, THIRD AND FOURTH BUTTONS
self.pushButton_4 = QtGui.QPushButton(self.frame_3)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.pushButton_4.sizePolicy().hasHeightForWidth())
self.pushButton_4.setSizePolicy(sizePolicy)
self.pushButton_4.setStyleSheet(_fromUtf8("border-image: url(imgs/required/btns/edit.jpg);background-color: transparent;"))
self.pushButton_4.setText(_fromUtf8(""))
self.pushButton_4.clicked.connect(lambda event: self.btnBehavior())
self.pushButton_4.setObjectName(_fromUtf8("pushButton_4"))
self.horizontalLayout_3.addWidget(self.pushButton_4)
self.pushButton_3 = QtGui.QPushButton(self.frame_3)
self.pushButton_3.setStyleSheet(_fromUtf8("border-image: url(imgs/required/btns/ch_pic.png); background-color: transparent;"))
self.pushButton_3.setText(_fromUtf8(""))
self.pushButton_3.setObjectName(_fromUtf8("pushButton_3"))
self.pushButton_3.clicked.connect(lambda event: self.btnBehavior())
self.horizontalLayout_3.addWidget(self.pushButton_3)
self.pushButton_2 = QtGui.QPushButton(self.frame_3)
self.pushButton_2.setStyleSheet(_fromUtf8("border-image: url(imgs/required/btns/trash.png);background-color: transparent;"))
self.pushButton_2.setText(_fromUtf8(""))
self.pushButton_2.setObjectName(_fromUtf8("pushButton_2"))
self.pushButton_2.clicked.connect(lambda event: self.btnBehavior())
self.horizontalLayout_3.addWidget(self.pushButton_2)
# -------------- end of widget definitions -------------------------- #
self.verticalLayout_3.addWidget(self.frame_3)
self.verticalLayout_2.addLayout(self.verticalLayout_3)
spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
self.verticalLayout_2.addItem(spacerItem)
self.verticalLayout.addWidget(self.frame_2)
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
Form.setWindowTitle(_translate("Form", "Form", None))
self.pushButton_4.setToolTip(_translate("Form", "<html><head/><body><p>rename</p></body></html>", None))
self.pushButton_3.setToolTip(_translate("Form", "<html><head/><body><p>picture</p></body></html>", None))
self.pushButton_2.setToolTip(_translate("Form", "<html><head/><body><p>delete</p></body></html>", None))
self.pushButton_2.setWhatsThis(_translate("Form", "<html><head/><body><p>delete</p></body></html>", None))
def btnBehavior(self):
print('btn clicked');
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
# Form = QtGui.QDialog()
ui = Ui_Form()
ui.setupUi()
ui.Form.show()
sys.exit(app.exec_())
您正在使用 QDialog
作为表单的基础,我发现了这个 link where the poster noticed the same thing you did, you can remedy the behaviour by changing the base class to QWidget, I didn't delve more deeply into it, but my guess is that it has something to do with intended uses for returnPressed() behaviour specific to QDialog. If you don't want to use the QWidget maybe you should try and reimplement the returnPressed()
method, more about that on this link。
根据 documentation:
autoDefault : bool
This property holds whether the push button is an auto default button
If this property is set to true then the push button is an auto
default button.
In some GUI styles a default button is drawn with an extra frame
around it, up to 3 pixels or more. Qt automatically keeps this space
free around auto-default buttons, i.e., auto-default buttons may have
a slightly larger size hint.
This property's default is true for buttons that have a QDialog
parent; otherwise it defaults to false.
See the default property for details of how default and auto-default
interact.
也就是这个问题的责任属性。解决方法是将 autoDefault
属性 设置为 False
for all QPushButtons.
为了以简单的方式做到这一点,我重组了你的代码,为此,Qt Designer 的状态已经生成,然后实现了实现该设计的逻辑,鉴于这是我提出的解决方案:
class Dialog(QtGui.QDialog, Ui_Form):
def __init__(self, parent=None):
QtGui.QDialog.__init__(self, parent)
self.setupUi(self)
for pb in self.findChildren(QtGui.QPushButton):
pb.setAutoDefault(False)
self.pushButton.clicked.connect(self.btnBehavior)
def btnBehavior(self):
print('btn clicked')
正如@ekhumoro 所说,您可以使用 Qt Designer 做同样的事情,.
我是 pyqt 编程的新手,所以也许我对此有误,但我发现按下 Enter 时的 self.lineEdit 调用按钮的功能,即使 self.handleKeyRelease 被注释。这是最少的代码,也是我发现奇怪行为的第一个地方。
self.lineEdit = QtGui.QLineEdit(self.frame)
# self.lineEdit.keyReleaseEvent = self.handleKeyRelease
self.pushButton = QtGui.QPushButton(self.frame)
self.pushButton.clicked.connect(lambda event: self._insertIntoCategories(db, self.lineEdit))
排在第二位的是动态制作的类似表单的小部件(有一个 LineEdit 和连续 3 个按钮)
self.lineEdit_2 = QtGui.QLineEdit(self.frame_3)
self.lineEdit_2.setText(item[1])
# ------------------------------------ block ------------------------------------------------- #
self.pushButton_4 = QtGui.QPushButton(self.frame_3)
self.pushButton_4.clicked.connect(lambda event, id=item[0], le=self.lineEdit_2: self.modal('edit', 'Are you sure you want to rename this category ?', id, le))
# ------------------------------------ block ------------------------------------------------- #
self.pushButton_3 = QtGui.QPushButton(self.frame_3)
self.pushButton_3.clicked.connect(lambda event, id=item[0]: self.__chIcon(id))
# ------------------------------------ block ------------------------------------------------- #
self.pushButton_2 = QtGui.QPushButton(self.frame_3)
self.pushButton_2.clicked.connect(lambda event, id=item[0], le=self.lineEdit_2: self.modal('delete', 'Are you sure you want to delete this category ?', id, le))
每个按钮都可以正常工作,但每次按下 Enter(或释放)时再次调用代码前一部分的功能(self.pushButton 的功能)self._insertIntoCategories 如果此代码还不够,如果需要,github 上有完整代码。
完全可执行的代码:
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_Form(object):
def setupUi(self):
self.Form = QtGui.QDialog()
Form = self.Form
Form.setObjectName(_fromUtf8("Form"))
Form.resize(504, 550)
self.verticalLayout = QtGui.QVBoxLayout(Form)
self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
self.frame = QtGui.QFrame(Form)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.frame.sizePolicy().hasHeightForWidth())
self.frame.setSizePolicy(sizePolicy)
self.frame.setMinimumSize(QtCore.QSize(0, 50))
self.frame.setStyleSheet(_fromUtf8("background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 green, stop:1 white);"))
self.frame.setFrameShape(QtGui.QFrame.StyledPanel)
self.frame.setFrameShadow(QtGui.QFrame.Raised)
self.frame.setObjectName(_fromUtf8("frame"))
self.horizontalLayout_2 = QtGui.QHBoxLayout(self.frame)
self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
self.horizontalLayout = QtGui.QHBoxLayout()
self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
# -------------- start of widget definitions -------------------------- #
# THIS IS FIRTS INPUT #
self.lineEdit = QtGui.QLineEdit(self.frame)
self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
self.horizontalLayout.addWidget(self.lineEdit)
# AND THIS IS FIRST BUTTON
self.pushButton = QtGui.QPushButton(self.frame)
self.pushButton.setMinimumSize(QtCore.QSize(50, 0))
self.pushButton.setStyleSheet(_fromUtf8("border-image: url(imgs/required/btns/add.png);background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 white, stop:1 white);"))
self.pushButton.setText(_fromUtf8(""))
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.pushButton.clicked.connect(lambda event: self.btnBehavior())
self.horizontalLayout.addWidget(self.pushButton)
# -------------- end of widget definitions -------------------------- #
self.horizontalLayout_2.addLayout(self.horizontalLayout)
self.verticalLayout.addWidget(self.frame)
self.frame_2 = QtGui.QFrame(Form)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.frame_2.sizePolicy().hasHeightForWidth())
self.frame_2.setSizePolicy(sizePolicy)
self.frame_2.setStyleSheet(_fromUtf8("background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 green, stop:1 white);"))
self.frame_2.setFrameShape(QtGui.QFrame.StyledPanel)
self.frame_2.setFrameShadow(QtGui.QFrame.Raised)
self.frame_2.setObjectName(_fromUtf8("frame_2"))
self.verticalLayout_2 = QtGui.QVBoxLayout(self.frame_2)
self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))
self.verticalLayout_3 = QtGui.QVBoxLayout()
self.verticalLayout_3.setObjectName(_fromUtf8("verticalLayout_3"))
self.frame_3 = QtGui.QFrame(self.frame_2)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.frame_3.sizePolicy().hasHeightForWidth())
self.frame_3.setSizePolicy(sizePolicy)
self.frame_3.setStyleSheet(_fromUtf8("background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 white, stop:1 green);"))
self.frame_3.setFrameShape(QtGui.QFrame.StyledPanel)
self.frame_3.setFrameShadow(QtGui.QFrame.Raised)
self.frame_3.setObjectName(_fromUtf8("frame_3"))
self.horizontalLayout_3 = QtGui.QHBoxLayout(self.frame_3)
self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3"))
# -------------- start of widget definitions, second row -------------------------- #
# THIS IS SECOND INPUT
self.lineEdit_2 = QtGui.QLineEdit(self.frame_3)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.lineEdit_2.sizePolicy().hasHeightForWidth())
self.lineEdit_2.setSizePolicy(sizePolicy)
self.lineEdit_2.setObjectName(_fromUtf8("lineEdit_2"))
self.horizontalLayout_3.addWidget(self.lineEdit_2)
#THIS IS SECOND, THIRD AND FOURTH BUTTONS
self.pushButton_4 = QtGui.QPushButton(self.frame_3)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.pushButton_4.sizePolicy().hasHeightForWidth())
self.pushButton_4.setSizePolicy(sizePolicy)
self.pushButton_4.setStyleSheet(_fromUtf8("border-image: url(imgs/required/btns/edit.jpg);background-color: transparent;"))
self.pushButton_4.setText(_fromUtf8(""))
self.pushButton_4.clicked.connect(lambda event: self.btnBehavior())
self.pushButton_4.setObjectName(_fromUtf8("pushButton_4"))
self.horizontalLayout_3.addWidget(self.pushButton_4)
self.pushButton_3 = QtGui.QPushButton(self.frame_3)
self.pushButton_3.setStyleSheet(_fromUtf8("border-image: url(imgs/required/btns/ch_pic.png); background-color: transparent;"))
self.pushButton_3.setText(_fromUtf8(""))
self.pushButton_3.setObjectName(_fromUtf8("pushButton_3"))
self.pushButton_3.clicked.connect(lambda event: self.btnBehavior())
self.horizontalLayout_3.addWidget(self.pushButton_3)
self.pushButton_2 = QtGui.QPushButton(self.frame_3)
self.pushButton_2.setStyleSheet(_fromUtf8("border-image: url(imgs/required/btns/trash.png);background-color: transparent;"))
self.pushButton_2.setText(_fromUtf8(""))
self.pushButton_2.setObjectName(_fromUtf8("pushButton_2"))
self.pushButton_2.clicked.connect(lambda event: self.btnBehavior())
self.horizontalLayout_3.addWidget(self.pushButton_2)
# -------------- end of widget definitions -------------------------- #
self.verticalLayout_3.addWidget(self.frame_3)
self.verticalLayout_2.addLayout(self.verticalLayout_3)
spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
self.verticalLayout_2.addItem(spacerItem)
self.verticalLayout.addWidget(self.frame_2)
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
Form.setWindowTitle(_translate("Form", "Form", None))
self.pushButton_4.setToolTip(_translate("Form", "<html><head/><body><p>rename</p></body></html>", None))
self.pushButton_3.setToolTip(_translate("Form", "<html><head/><body><p>picture</p></body></html>", None))
self.pushButton_2.setToolTip(_translate("Form", "<html><head/><body><p>delete</p></body></html>", None))
self.pushButton_2.setWhatsThis(_translate("Form", "<html><head/><body><p>delete</p></body></html>", None))
def btnBehavior(self):
print('btn clicked');
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
# Form = QtGui.QDialog()
ui = Ui_Form()
ui.setupUi()
ui.Form.show()
sys.exit(app.exec_())
您正在使用 QDialog
作为表单的基础,我发现了这个 link where the poster noticed the same thing you did, you can remedy the behaviour by changing the base class to QWidget, I didn't delve more deeply into it, but my guess is that it has something to do with intended uses for returnPressed() behaviour specific to QDialog. If you don't want to use the QWidget maybe you should try and reimplement the returnPressed()
method, more about that on this link。
根据 documentation:
autoDefault : bool
This property holds whether the push button is an auto default button
If this property is set to true then the push button is an auto default button.
In some GUI styles a default button is drawn with an extra frame around it, up to 3 pixels or more. Qt automatically keeps this space free around auto-default buttons, i.e., auto-default buttons may have a slightly larger size hint.
This property's default is true for buttons that have a QDialog parent; otherwise it defaults to false.
See the default property for details of how default and auto-default interact.
也就是这个问题的责任属性。解决方法是将 autoDefault
属性 设置为 False
for all QPushButtons.
为了以简单的方式做到这一点,我重组了你的代码,为此,Qt Designer 的状态已经生成,然后实现了实现该设计的逻辑,鉴于这是我提出的解决方案:
class Dialog(QtGui.QDialog, Ui_Form):
def __init__(self, parent=None):
QtGui.QDialog.__init__(self, parent)
self.setupUi(self)
for pb in self.findChildren(QtGui.QPushButton):
pb.setAutoDefault(False)
self.pushButton.clicked.connect(self.btnBehavior)
def btnBehavior(self):
print('btn clicked')
正如@ekhumoro 所说,您可以使用 Qt Designer 做同样的事情,.