close the custom inputdialog on clicking a button in PyQt5
我创建了一个自定义搜索对话框,其中包含几个输入字段和两个按钮,例如" Submit "和" Close "。在按下关闭时,我想关闭对话框窗口并返回到父窗口,同样,在提交时,我可以过滤数据并且对话框保持活动状态,在两种情况下,我都想关闭对话框窗口,我该怎么做,请帮忙.......
样本主窗口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | from PyQt5 import QtCore, QtGui, QtWidgets from search_dialog import Ui_Dialog import sys class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(800, 600) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(240, 150, 75, 23)) self.pushButton.setObjectName("pushButton") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.pushButton.clicked.connect(self.open_dialog) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow","MainWindow")) self.pushButton.setText(_translate("MainWindow","PushButton")) def open_dialog(self): dialog = QtWidgets.QDialog(self.centralwidget) ui = Ui_Dialog() ui.setupUi(dialog) dialog.show() if __name__ =="__main__": app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_()) |
搜索对话框
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | from PyQt5 import QtCore, QtGui, QtWidgets import sys class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(508, 230) self.widget = QtWidgets.QWidget(Dialog) self.widget.setGeometry(QtCore.QRect(40, 60, 436, 19)) self.widget.setObjectName("widget") self.horizontalLayout = QtWidgets.QHBoxLayout(self.widget) self.horizontalLayout.setContentsMargins(0, 0, 0, 0) self.horizontalLayout.setObjectName("horizontalLayout") self.radioButton = QtWidgets.QRadioButton(self.widget) self.radioButton.setObjectName("radioButton") self.horizontalLayout.addWidget(self.radioButton) self.radioButton_2 = QtWidgets.QRadioButton(self.widget) self.radioButton_2.setObjectName("radioButton_2") self.horizontalLayout.addWidget(self.radioButton_2) self.radioButton_3 = QtWidgets.QRadioButton(self.widget) self.radioButton_3.setObjectName("radioButton_3") self.horizontalLayout.addWidget(self.radioButton_3) self.radioButton_4 = QtWidgets.QRadioButton(self.widget) self.radioButton_4.setObjectName("radioButton_4") self.horizontalLayout.addWidget(self.radioButton_4) self.radioButton_5 = QtWidgets.QRadioButton(self.widget) self.radioButton_5.setObjectName("radioButton_5") self.horizontalLayout.addWidget(self.radioButton_5) self.widget1 = QtWidgets.QWidget(Dialog) self.widget1.setGeometry(QtCore.QRect(280, 160, 158, 25)) self.widget1.setObjectName("widget1") self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.widget1) self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0) self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.pushButton_2 = QtWidgets.QPushButton(self.widget1) self.pushButton_2.setObjectName("pushButton_2") self.horizontalLayout_3.addWidget(self.pushButton_2) self.pushButton = QtWidgets.QPushButton(self.widget1) self.pushButton.setObjectName("pushButton") self.horizontalLayout_3.addWidget(self.pushButton) self.widget2 = QtWidgets.QWidget(Dialog) self.widget2.setGeometry(QtCore.QRect(71, 111, 371, 22)) self.widget2.setObjectName("widget2") self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.widget2) self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.label = QtWidgets.QLabel(self.widget2) self.label.setObjectName("label") self.horizontalLayout_2.addWidget(self.label) self.lineEdit = QtWidgets.QLineEdit(self.widget2) self.lineEdit.setObjectName("lineEdit") self.horizontalLayout_2.addWidget(self.lineEdit) self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog","Dialog")) self.radioButton.setText(_translate("Dialog","Column 1")) self.radioButton_2.setText(_translate("Dialog","Column 2")) self.radioButton_3.setText(_translate("Dialog","Column 3")) self.radioButton_4.setText(_translate("Dialog","Column 4")) self.radioButton_5.setText(_translate("Dialog","Column 5")) self.pushButton_2.setText(_translate("Dialog","Cancel")) self.pushButton.setText(_translate("Dialog","Submit")) self.label.setText(_translate("Dialog","Enter the string :")) |
您必须将按钮连接到插槽
您可以在方法
中进行操作
1 2 3 4 5 | class Ui_Dialog(object): def setupUi(self, Dialog): ... self.pushButton_2.clicked.connect(Dialog.reject) self.pushButton.clicked.connect(Dialog.accept) |
您也可以使用