进度条窗口
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_()
原文出处:/show_1GW1s9JxzsHf.html