from PySide2.QtWidgets import QApplication, QMessageBox
from PySide2.QtUiTools import QUiLoader
class Stats:
def __init__(self):
# 从文件中加载UI定义
# 从 UI 定义中动态 创建一个相应的窗口对象
# 注意:里面的控件对象也成为窗口对象的属性了
# 比如 self.ui.button , self.ui.textEdit
self.ui = QUiLoader().load('main.ui')#动态链接
# self.ui.button.clicked.connect(self.handleCalc)#按钮链接
def handleCalc(self):
# info = self.ui.textEdit.toPlainText()#读取文本
# QMessageBox.about(self.ui,
# '弹窗标题',
# '弹窗正文'
# )
app = QApplication([])
stats = Stats()
stats.ui.show()
app.exec_()
**
**
QProgressBar 是进度条,如下图所示
重点功能介绍
我们可以通过它的 setRange 方法设定步骤个数,比如
progressBar.setRange(0,5)
然后,通过 setValue 方法,指定当前完成到了哪一步,比如
progressBar.setValue(3)#进行到第三步
代码如下:
from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton, QProgressBar,QMessageBox
from time import sleep
from threading import Thread
class Stats():
def __init__(self):
self.window = QMainWindow()
self.window.resize(500, 400)
self.window.move(300, 300)
self.progressBar = QProgressBar(self.window)
self.progressBar.resize(300, 20)
self.progressBar.move(80, 30)
# 进度是 0 - 5,
self.progressBar.setRange(0,5)
self.button = QPushButton('统计', self.window)
self.button.move(80, 80)
self.button.clicked.connect(self.handleCalc)
# 统计进行中标记,不能同时做两个统计
self.ongoing = False
def handleCalc(self):
def workerThreadFunc():
self.ongoing = True
for i in range(1,6):
sleep(1)
# 设置进度值
self.progressBar.setValue(i)
self.ongoing = False
if self.ongoing:
QMessageBox.warning(
self.window,
'警告','任务进行中,请等待完成')
return
# 通常任务执行比较耗时,应该在新的线程中进行
# 否则会阻塞主线程显示界面
worker = Thread(target=workerThreadFunc)
worker.start()
app = QApplication([])
stats = Stats()
stats.window.show()
app.exec_()
参考链接:白月黑羽