PyQt5调用Qdialog对话框,怎么在程序执行完毕后,自动关闭Qdialog?

import sys
from time import sleep
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *


class DialogDemo(QMainWindow):

    def __init__(self, parent=None):
        super(DialogDemo, self).__init__(parent)
        self.setWindowTitle("进行中")
        self.resize(350, 300)

        self.btn = QPushButton(self)
        self.btn.setText("运行")
        self.btn.move(50, 50)
        self.btn.clicked.connect(self.buttonClick)
        self.btn.clicked.connect(self.showdialog)


    def buttonClick(self):  # 点击事件启动线程
        self.thread = RunThread()
        self.thread.start()  # 启动线程

    def showdialog(self):
        dialog = QDialog()
        dialog.resize(175,150)
        dialog.setWindowTitle("进行中")
        dialog.setWindowModality(Qt.ApplicationModal)
        dialog.exec_()

class RunThread(QThread):
    def __init__(self):
        super(RunThread, self).__init__()

    def run(self):
        for i in range(1,10):
            print(i)
            sleep(1)
        print("结束")
        

if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = DialogDemo()
    demo.show()
    sys.exit(app.exec_())

Qdialog窗口内不需要任何控件,只是提醒后台程序正在进行中,用exec()也是禁止操作主窗口,但现在循环执行完毕,不知如何关闭Qdialog窗口。只关闭Qdialog窗口,然后可以继续执行循环,主窗口不关闭。

exec是模态对话框,想要显示后,主窗口能操作,用show即可

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

采用pyqtSignal,已经解决.