我有一个PyQt5
窗口,它会打开一个我创建的对话窗口,它只是要求用户执行某些操作并单击关闭窗口的按钮。这两个窗口由class RenameDialog(QtWidgets.QMainWindow):
和class Prog(QtWidgets.QMainWindow):
组成。在Prog
中,我有self.renameDialog = RenameDialog(self)
。在我有一段代码中
self.renameDialog.show()
#Other code to run after renameDialog window is closed
但这不起作用,因为我无法弄清楚如何等到renameDialog
关闭。我尝试在self.renameDialog.setWindowModality(QtCore.Qt.WindowModality)
之前添加self.renameDialog.show()
,我试图弄清楚如何使用.exec_()
,但我不知道在这种情况下我可以在哪里使用此方法。有没有办法在继续代码之前等待隐藏或销毁QtWidgets.QMainWindow
?
答案 0 :(得分:3)
这里有两个可能性。
1.您可以将对话框设置为模态。在这种情况下,阻止与GUI的任何其他交互,直到用户关闭对话框。只有这样代码才会继续。您需要继承QDialog才能使其正常工作:
class RenameDialog(QDialog):
# ...
pass
class YourMainWindow(QMainWindow):
def show_dlg(self):
dlg = RenameDialog(self)
res = dlg.exec()
if res == QDialog.Accepted:
print('Accepted')
else:
print('Rejected')
finished
信号被触发,并且连接的回调函数被调用。