Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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 PySide:隐藏对话框会中断对话框。exec_u389;()_Python_Dialog_Pyside - Fatal编程技术网

Python PySide:隐藏对话框会中断对话框。exec_u389;()

Python PySide:隐藏对话框会中断对话框。exec_u389;(),python,dialog,pyside,Python,Dialog,Pyside,在我的项目中,我必须向人们展示一个可以接受或打开另一个对话框的对话框。 我通过使用dialog.exec()启动对话框,这也应该可以捕获QtGui.QDialog.Accepted,并在它之后做一些好事 当第一个对话框打开第二个对话框时,我尝试用self.hide()隐藏第一个对话框,当第二个对话框收到QtGui.QDialog.Accepted时,我用self.show()再次显示它。 这很好,但在此之后,第一个窗口的accept按钮不会返回类似于QtGui.QDialog.Accepted的

在我的项目中,我必须向人们展示一个可以接受或打开另一个对话框的对话框。 我通过使用
dialog.exec()
启动对话框,这也应该可以捕获
QtGui.QDialog.Accepted
,并在它之后做一些好事

当第一个对话框打开第二个对话框时,我尝试用
self.hide()
隐藏第一个对话框,当第二个对话框收到
QtGui.QDialog.Accepted
时,我用
self.show()
再次显示它。 这很好,但在此之后,第一个窗口的accept按钮不会返回类似于
QtGui.QDialog.Accepted的任何内容

问题是它工作正常,直到在打开第二个窗口时使用
self.hide()
self.show()
。不使用隐藏选项可以使其工作无缺陷


如何隐藏和显示对话框而不破坏我需要知道的窗口何时被接受的
对话框.exec()
。首先,我再次尝试使用非模态对话框,但这并不一致

最后,我制作了一系列模态对话框,效果非常好!我首先启动第一个对话框,当它被接受时,它会继续,但是当它被拒绝时,会出现另一个对话框,它只能被接受。接受第二个对话框后,将再次执行第一个对话框

通过使用while循环,您可以轻松管理:

    self.notification = firstDialog(self) #custom dialog class
    self.notification2 = secondDialog(self) #second custom dialog class

    while True:
        self.notification.show()
        if self.notification.exec_() == QtGui.QDialog.Accepted: 
            break
        else: #in case of rejection (the only other option in this dialog)
            self.notification2.show()
            if self.notification2.exec_() == QtGui.QDialog.Accepted:
                continue

    self.startFunction() #start what should happen after people accept the dialog

首先,您是从第一个对话框的代码调用
second\u dialog.exec()
,还是执行其他操作?更一般地说,你能展示你的(精简的)代码,而不是让我们猜测吗?同时,我不确定你试图做的是适合模态对话框。隐藏模态对话框非常奇怪。(使用经典的Mac Toolbox API,模态对话框最初来自于此,这样做会使计算机崩溃,这意味着Tog从未想到有人会想尝试它……)为什么不在第一个模态之前弹出第二个模态,或者将其改为一系列模态,而不是一堆模态?(或者,最重要的是,重新考虑您的设计,这样您就不需要多个模态了……)