我有一个 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
被隐藏或销毁后再继续代码?
最佳答案
这里有两种可能性。
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()您的对话信号。这样,对话框不必是模态的,您仍然可以与 GUI 的其余部分进行交互。当用户关闭对话框时,
finished
信号将被触发,并调用连接的回调函数。
关于python - 等到 QtWidgets.QMainWindow 关闭后再继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50029201/