一、进度条控件
进度条控件控件主要显示任务的执行进度,PySide6 中提供了进度条控件(QProgressBar)。进度条控件通常在执行长时间任务时,用进度条告诉用户当前的进展情况。
我们可以在终端中使用 pip 安装 pyside6 模块。
pip install pyside6
用 QProgressBar 类创建实例对象的方法如下:
QProgressBar(parent:QWidget=None)
其中,parent 是 窗口 或者 容器 类控件。
QProgressBar 类的常用方法及其说明如下:
# 实例方法
minimum() -> int # 获取最小值
maximum() -> int # 获取最大值
value() -> int # 获取值
text() -> str # 获取文本
orientation() -> Qt.Orientation # 获取方向
setAlignment(alignment:Qt.Alignment) -> None # 设置对齐方式
alignment() -> Qt.Alignment # 获取对齐方式
setFormat(format:str) -> None # 设置文本的格式
format() -> str # 获取文本的格式
resetFormat() -> None # 重置文本的格式
setInvertedAppearance(invert:bool) -> None # 设置外观是否反转
invertedAppearance() -> bool # 获取外观是否反转
setTextDirection(textDirection:Qt.TextDirection) -> None # 设置进度条文本方向
textDirection() -> Qt.TextDirection # 获取进度条文本方向
setTextVisible(visible:bool) -> None # 设置进度条文本是否可见
isTextVisible() -> bool # 获取进度条文本是否可见# 槽函数
setMinimum(minimum:int) -> None # 设置最小值
setMaximum(maximum:int) -> None # 设置最大值
setRange(minimum:int, maximum:int) -> None # 设置范围
setValue(value:int) -> None # 设置值
setOrientation(orientation:Qt.Orientation) -> None # 设置方向
reset() -> None # 重置进度条,返回初始位置
用 setOrientation(Qt.Orientation)
方法可以设置进度条的方向,参数 Qt.Orientation 可以取 Qt.Orientation.Horizontal 或 Qt.Orientation.Vertical ;用 setTextDirection(QProgressBar.Direction)
方法设置进度条上文本的方向,参数 QProgressBar.Direction 可以取 QProgressBar.Direction.TopToBottom 或 QProgressBar.Direction.BottomToTop,分别表示文本顺时针旋转 90° 和逆时针旋转 90°。设置文本在进度条上的对齐方式可以用 setAlignment(Qt.Alignment)
方法,如果 Qt.Alignment 取 Qt.Alignment.AlignHCenter,文本将会放置到进度条的中间。
用 setFormat(str)
方法设置显示的文字格式,在文字中 %p%
表示 百分比值,%v
表示 当前值,%m
表示 总数,默认显示的是 %p%
;获取文本格式用 format() 方法;获取格式化的文本用 text() 方法。
QProgressBar 控件中常用的信号及其说明如下:
valueChanged(value) # 进度条的值发生改变时发射
import sysfrom PySide6.QtWidgets import QApplication, QWidget
from PySide6.QtWidgets import QProgressBar
from PySide6.QtCore import QTimer, Qtclass MyWidget(QWidget):def __init__(self):# 1.调用父类Qwidget类的__init__()方法super().__init__()# 2.调用setupUi()方法初始化页面self.setup_ui()self.count = 0# 3.创建一个定时器对象self.timer = QTimer()# 4.启动定时器self.timer.start(1000)# 5.关联信号self.timer.timeout.connect(self.change_progressBar)def setup_ui(self):# 1.设置窗口对象大小self.resize(700, 500)# 2.创建进度条控件self.progressBar = QProgressBar(self)self.progressBar.resize(500, 30)# 3.设置进度条范围self.progressBar.setRange(0, 100)# 4.设置进度条的当前值self.progressBar.setValue(0)# 5.设置进度条的文字显示格式self.progressBar.setFormat("%v%")# 6.设置对齐方式self.progressBar.setAlignment(Qt.AlignmentFlag.AlignLeft)# 7.设置进度条的布局方向self.progressBar.setLayoutDirection(Qt.LayoutDirection.LeftToRight)# 8.设置进度条的显示方向self.progressBar.setOrientation(Qt.Orientation.Horizontal)# 9.设置进度条是否以反方向显示进度self.progressBar.setInvertedAppearance(False)# 10.设置进度条文本显示方向self.progressBar.setTextDirection(QProgressBar.Direction.TopToBottom)# 11.获取进度条的最小值,最大值,当前值print(self.progressBar.minimum(), self.progressBar.maximum(), self.progressBar.value())# 12.定义信号与槽的连接self.progressBar.valueChanged.connect(self.valueChanged)def change_progressBar(self):self.count += 1if self.count <= 100:self.progressBar.setValue(self.count)else:self.count = 0self.progressBar.reset()def valueChanged(self, value):print("进度条的值改变了,当前值为:", value)if __name__ == "__main__":# 1.创建一个QApplication类的实例app = QApplication(sys.argv)# 2.创建一个窗口window = MyWidget()# 3.展示窗口window.show()# 4.进入程序的主循环并通过exit()函数确保主循环安全结束sys.exit(app.exec())
如果最小值和最大值都设置为 0,那么进度条会显示为一个不断循环滚动的繁忙状态;