进度条类控件主要显示任务的执行进度,PyQt5主要提供两种类型进度条控件:进度条ProgressBar和滑块控件QSlider。
一、ProgressBar:进度条
执行长时间任务时,用进度条告诉用户的进展情况。
ProgressBar控件对应PyQt5中的QProgressBar类,常用方法及说明见下表,最常用的信号valueChanged,进度条值发生改变时发射。
注:如果最小值和最大值都设置为0,进度条会显示为一个不断循环滚动的繁忙进度。
二、QSlider:滑块控件
PyQt5中提供两个滑动控件型输入控件QSlider和QScrollBar。
QSlider和QScrollBar类常用方法及说明
示例ui界面
QSlider_QProgressBar滑块和进度条控件使用示例
from PyQt5.Qt import *
from PyQt5 import QtGui
from ui_Demo_QSlider_QProgressBar import Ui_mainWindow
class QSlider_QProgressBar_Demo(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.ui = Ui_mainWindow() # 创建UI对象
self.ui.setupUi(self) # 构建UI
# 设置控件(大小、位置、样式...)
self.ui.horizontalScrollBar.setMaximum(100)
self.ui.horizontalSlider.setMaximum(100)
self.ui.progressBar.setMaximum(100)
# 为横向滑块绑定valueChanged信号,在值发生更改是发射
self.ui.horizontalSlider.valueChanged.connect(self.setfontsize)
# self.ui.horizontalScrollBar.valueChanged.connect(self.setfontsize)
# self.ui.verticalSlider.valueChanged.connect(self.setfontsize)
# self.ui.verticalScrollBar.valueChanged.connect(self.setfontsize)
# 为横向滑块绑定valueChanged信号,在值发生更改是发射
self.ui.horizontalSlider_2.valueChanged.connect(self.do_valueChanged)
# 定义槽函数,根据横向滑块的值改变垂直滑块的值和Label控件的字体大小
def setfontsize(self):
value = self.ui.horizontalSlider.value()
self.ui.verticalSlider.setValue(value)
self.ui.label.setFont(QtGui.QFont("楷体", value))
#自定义槽函数
def do_valueChanged(self,value):
self.ui.progressBar.setValue(value)
#自动关联槽函数,设置进度条显示参数
def on_radioButton_clicked(self):
self.ui.progressBar.setFormat("%p%") #显示格式-百分比
def on_radioButton_2_clicked(self):
self.ui.progressBar.setFormat("%v") #显示格式-当前值
@pyqtSlot(bool)
def on_checkBox_clicked(self,checked):
self.ui.progressBar.setInvertedAppearance(checked) #设置进度条是否反方向显示进度
@pyqtSlot(bool)
def on_checkBox_2_clicked(self,checked):
self.ui.progressBar.setTextVisible(checked) #设置进度值文本是否可见
if __name__ == '__main__':
import sys
#1、创建一个应用程序对象
app=QApplication(sys.argv)
#2、控件的操作
#创建控件
window=QSlider_QProgressBar_Demo()
#展示控件
window.show()
#3、应用程序的执行,进入到消息循环
sys.exit(app.exec_())
以上进度条也可以通过自定义加载GIF图片方式实现,具体可以参见往期推文Python做个界面小工具这么简单,你确定不学一下!