我正在使用python 2.7与PyQT5,这是我的按钮:
self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
self.buttonBox.setGeometry(QtCore.QRect(50, 240, 341, 32))
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
self.buttonBox.setObjectName("buttonBox")
self.buttonBox.clicked.connect(Dialog.accept)
self.buttonBox.rejected.connect(Dialog.reject)
Run Code Online (Sandbox Code Playgroud)
等等....
if __name__ == "__main__":
app = QApplication(sys.argv)
window = QDialog()
ui = Ui_Dialog()
ui.setupUi(window)
window.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
单击OK后如何执行函数?
不要连接buttonBox.clicked,因为每个按钮都会调用它.
您的按钮框连接应如下所示:
self.buttonBox.accepted.connect(Dialog.accept)
self.buttonBox.rejected.connect(Dialog.reject)
Run Code Online (Sandbox Code Playgroud)
要在接受对话框时运行功能/插槽(即仅在单击"确定"按钮时),请执行以下操作:
self.accepted.connect(some_function)
Run Code Online (Sandbox Code Playgroud)
如果要传递参数,请使用lambda:
self.accepted.connect(lambda: some_function(param))
Run Code Online (Sandbox Code Playgroud)
小智 6
你的buttonBox设置应该看起来像
self.buttonBox.clicked.connect(Dialog.accept)
self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(Dialog.reject)
Run Code Online (Sandbox Code Playgroud)
其中self.accept是定义到类中的函数。
def accept(self):
Run Code Online (Sandbox Code Playgroud)
如果需要将一些参数传递给函数,则需要将这些参数存储到一些类变量中,而不是将它们作为参数传递到函数中。
| 归档时间: |
|
| 查看次数: |
9285 次 |
| 最近记录: |