Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何验证并退出该对话框?_Python_Validation_User Interface_Input_Pyqt4 - Fatal编程技术网

Python 如何验证并退出该对话框?

Python 如何验证并退出该对话框?,python,validation,user-interface,input,pyqt4,Python,Validation,User Interface,Input,Pyqt4,我将Python3.3与pyqt4一起使用。在制作GUI时,我要求用户在一个函数中使用多个弹出对话框输入特定的详细信息,但是,如果没有在对话框中输入任何内容,它将接受该值,而不是要求用户重新输入。还有关闭对话框的选项(右上角的“退出”按钮),但是单击该选项时,下一个对话框将运行,而不是停止整个功能。 我希望对话框在“退出”按钮激活时停止运行,并且对话框不允许输入任何值。如果需要任何其他信息,请告诉我。使用表格收集这些信息。您可以创建一个类似下面代码的对话框。这段代码可能并不完全是您所需要的,但一

我将Python3.3与pyqt4一起使用。在制作GUI时,我要求用户在一个函数中使用多个弹出对话框输入特定的详细信息,但是,如果没有在对话框中输入任何内容,它将接受该值,而不是要求用户重新输入。还有关闭对话框的选项(右上角的“退出”按钮),但是单击该选项时,下一个对话框将运行,而不是停止整个功能。
我希望对话框在“退出”按钮激活时停止运行,并且对话框不允许输入任何值。如果需要任何其他信息,请告诉我。

使用表格收集这些信息。您可以创建一个类似下面代码的对话框。这段代码可能并不完全是您所需要的,但一定会为您指明正确的方向

下面是代码(使用QTAN设计器生成)

注意:自动生成的国际化内容被删除,以使示例最简洁


你停止跑步是什么意思?崩溃?是的,由于用户插入的信息存储在我的sqlite数据库中,因此我不希望在关闭对话框(或输入空值)时存储任何信息。但是,我不想结束我的整个程序,因为在使用这些对话框时,我会让GUI的其他部分运行(例如链接到这些对话框的页面)。感谢反馈,我已经适应了验证qinput对话框,当我不输入任何信息时,该对话框将重新出现(并且不会跳到下一个对话框)。注意,我保留了姓名和姓氏的快速对话框(一次弹出一个)。但是,当我单击“取消”或“退出”时,我将看到下一个对话框,而不是所有未运行的对话框,这正是我想要的。
...
Textbox = QtGui.QInputDialog.getText(self, 'Get Name', 
            'Enter  Name:')
        Text =Texbox[0]
Textbox2 = QtGui.QInputDialog.getText(self, 'Get Surname', 
            'Enter  Surname:')
        Text2 =Texbox2[0]
...
from PyQt4 import QtCore, QtGui

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(371, 113)
        self.gridLayout_2 = QtGui.QGridLayout(Dialog)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.gridLayout = QtGui.QGridLayout()
        self.gridLayout.setObjectName("gridLayout")
        self.label = QtGui.QLabel(Dialog)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
        self.lineEdit = QtGui.QLineEdit(Dialog)
        self.lineEdit.setObjectName("lineEdit")
        self.gridLayout.addWidget(self.lineEdit, 0, 1, 1, 1)
        self.label_2 = QtGui.QLabel(Dialog)
        self.label_2.setObjectName("label_2")
        self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
        self.lineEdit_2 = QtGui.QLineEdit(Dialog)
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.gridLayout.addWidget(self.lineEdit_2, 1, 1, 1, 1)
        self.gridLayout_2.addLayout(self.gridLayout, 0, 0, 1, 1)
        self.buttonBox = QtGui.QDialogButtonBox(Dialog)
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
        self.buttonBox.setObjectName("buttonBox")
        self.gridLayout_2.addWidget(self.buttonBox, 1, 0, 1, 1)

        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), Dialog.accept)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), Dialog.reject)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    Dialog = QtGui.QDialog()
    ui = Ui_Dialog()
    ui.setupUi(Dialog)
    Dialog.show()
    sys.exit(app.exec_())