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,已经解决.