首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >单击确定后执行函数(QDialogButtonBox)

单击确定后执行函数(QDialogButtonBox)
EN

Stack Overflow用户
提问于 2015-11-05 22:57:06
回答 2查看 18.2K关注 0票数 6

我正在使用Python2.7和PyQT5,这是我的按钮:

代码语言:javascript
复制
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)

等等……

代码语言:javascript
复制
if __name__ == "__main__":

app = QApplication(sys.argv)
window = QDialog()
ui = Ui_Dialog()
ui.setupUi(window)

window.show()
sys.exit(app.exec_())

点击OK后如何执行函数??

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-07 00:44:52

不要连接到buttonBox.clicked,因为每个按钮都会调用它。

代码语言:javascript
复制
    self.buttonBox.accepted.connect(Dialog.accept)
    self.buttonBox.rejected.connect(Dialog.reject)

要在接受对话框时运行函数/插槽(即,仅当单击确定按钮时),请执行以下操作:

代码语言:javascript
复制
    self.accepted.connect(some_function)

如果要传递参数,请使用lambda

代码语言:javascript
复制
    self.accepted.connect(lambda: some_function(param))
票数 17
EN

Stack Overflow用户

发布于 2015-11-06 23:20:36

您的buttonBox设置应该如下所示

代码语言:javascript
复制
self.buttonBox.clicked.connect(Dialog.accept)
self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(Dialog.reject)

其中self.accept是定义到类中的函数。

代码语言:javascript
复制
def accept(self):

如果您需要将一些参数传递给函数,则需要将这些参数存储到一些类变量中,而不是将它们作为params传递给函数。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33547821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档