python pyside2 进度条窗口,执行结束后,启动另一个窗口 作者:马育民 • 2025-09-16 16:20 • 阅读:10002 # 进度条窗口 ``` from PySide2.QtCore import * from PySide2.QtWidgets import * import sys,os,time import PySide2 from b窗口 import MyMainWindow dirname = os.path.dirname(PySide2.__file__) plugin_path = os.path.join(dirname, 'plugins', 'platforms') os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = plugin_path class Ui_Dialog(object): def setupUi(self, Dialog): self.dialog = Dialog if not Dialog.objectName(): Dialog.setObjectName(u"Dialog") Dialog.resize(617, 66) self.verticalLayout = QVBoxLayout(Dialog) self.verticalLayout.setObjectName(u"verticalLayout") self.progressBar = QProgressBar(Dialog) self.progressBar.setObjectName(u"progressBar") self.progressBar.setRange(0, 100) # 设置进度范围(最小值, 最大值) self.progressBar.setValue(0) # 设置初始值 self.verticalLayout.addWidget(self.progressBar) self.retranslateUi(Dialog) QMetaObject.connectSlotsByName(Dialog) self.run_on_start() # setupUi def retranslateUi(self, Dialog): Dialog.setWindowTitle(QCoreApplication.translate("Dialog", u"Dialog", None)) # retranslateUi def run_on_start(self): """启动时自动执行的任务""" # 启动后台线程执行耗时任务 self.thread = ProgressThread() # 执行时更新进度条 self.thread.progress_updated.connect(self.progressBar.setValue) # 执行完成时执行的函数 self.thread.finished.connect(self.task_finished) # 启动线程 self.thread.start() def task_finished(self): print("执行完成") # 关键,创建的对象,必须赋值给成员变量,不能赋值给局部变量,否则窗口闪退 self.window = MyMainWindow() # 该类是生成的类名 self.window.show() # 当前窗口关闭 self.dialog.close() class ProgressThread(QThread): progress_updated = Signal(int) # 用于发送进度信号 def run(self): for i in range(1,101): self.progress_updated.emit(i) # 发送当前进度 time.sleep(0.05) # 模拟任务耗时 if __name__ == "__main__": app = QApplication(sys.argv) form = QWidget() uiform = Ui_Dialog() # 该类是生成的类名 uiform.setupUi(form) form.show() app.exec_() ``` # 另一个窗口 ``` import sys from PySide2.QtWidgets import QMainWindow, QApplication, QWidget,QDialog from UI_MainWindow import Ui_Dialog # 各个平台一致的UI界面 QApplication.setStyle("Fusion") class MyMainWindow(QWidget): def __init__(self): super().__init__() self.window = Ui_Dialog() self.window.setupUi(self) self.initUI() def initUI( self ): # 点击事件连接槽函数 self.window.sendBtn.clicked.connect(self.send) # 发送 def send(self): print("Hello World!") if __name__ == "__main__": app = QApplication(sys.argv) window = MyMainWindow() # 该类是生成的类名 window.show() # 启动事件循环 app.exec_() ``` 原文出处:http://malaoshi.top/show_1GW1s9JxzsHf.html