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从未想到有人会想尝试它……)为什么不在第一个模态之前弹出第二个模态,或者将其改为一系列模态,而不是一堆模态?(或者,最重要的是,重新考虑您的设计,这样您就不需要多个模态了……)