单击确定后执行功能(QDialogButtonBox)
execute function after click OK (QDialogButtonBox)
我正在使用 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)
等....
if __name__ == "__main__":
app = QApplication(sys.argv)
window = QDialog()
ui = Ui_Dialog()
ui.setupUi(window)
window.show()
sys.exit(app.exec_())
点击确定后如何执行功能??
您的 buttonBox 设置应该如下所示
self.buttonBox.clicked.connect(Dialog.accept)
self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(Dialog.reject)
其中 self.accept
是定义到 class 中的函数。
def accept(self):
如果您需要将一些参数传递给函数,您需要将这些参数存储到一些 class 变量中,而不是将它们作为参数传递给函数。
不要连接到 buttonBox.clicked
,因为 每个 按钮都会调用它。
您的按钮框连接应如下所示:
self.buttonBox.accepted.connect(Dialog.accept)
self.buttonBox.rejected.connect(Dialog.reject)
要 运行 a function/slot 当对话框被接受时(即仅当单击确定按钮时),执行此操作:
self.accepted.connect(some_function)
如果要传递参数,使用lambda
:
self.accepted.connect(lambda: some_function(param))
我正在使用 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)
等....
if __name__ == "__main__":
app = QApplication(sys.argv)
window = QDialog()
ui = Ui_Dialog()
ui.setupUi(window)
window.show()
sys.exit(app.exec_())
点击确定后如何执行功能??
您的 buttonBox 设置应该如下所示
self.buttonBox.clicked.connect(Dialog.accept)
self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(Dialog.reject)
其中 self.accept
是定义到 class 中的函数。
def accept(self):
如果您需要将一些参数传递给函数,您需要将这些参数存储到一些 class 变量中,而不是将它们作为参数传递给函数。
不要连接到 buttonBox.clicked
,因为 每个 按钮都会调用它。
您的按钮框连接应如下所示:
self.buttonBox.accepted.connect(Dialog.accept)
self.buttonBox.rejected.connect(Dialog.reject)
要 运行 a function/slot 当对话框被接受时(即仅当单击确定按钮时),执行此操作:
self.accepted.connect(some_function)
如果要传递参数,使用lambda
:
self.accepted.connect(lambda: some_function(param))