实战PyQt5: 039-进度条控件QProgressBar

QProgressBar简介

QProgressBar是一个进度条控件,用于向用户提供操作进度的指示,用户也可以从进度条看出程序是否正在运行,在PyQt5工具包中,QProgressBar提供了一个水平或垂直进度条。可以为进度条设置取值范围(最小值和最大值,默认值分别为0到99)。

QProgressBar常用方法:

  • setRange(): 设置进度条的取值范围(最小值和最大值);
  • setMinimum(): 设置进度条的最小值;
  • setMaximum(): 设置进度条的最大值;
  • setValue(): 设置进度条的值;
  • reset(): 让进度条重新回到开始位置;
  • setOrientation(): 设置进度条方向(水平: Qt.Horizontal, 垂直: Qt.Vertical);
  • setTextVisible(): 设置进度条的文本是否可见;
  • setTextDirection(): 设置文本方向,只对垂直进度条有效;
  • setInvertedAppearance(): 设置进度条的方向(True/False: 正反方向);
  • setFormat(): 设置文本字符串的格式(%p, 百分比显示,这是默认情况, %v: 当前进度, %m :总步数)。

注:繁忙指示,如果将最小值和最大值都设置为0,这时进度条会显示一个应用繁忙状态,而不会显示当前的值。

QProgressBar常用信号:

  • valueChanged: 进度条的值发生改变时,发射此信号。

QProgressBar类继承关系:

实战PyQt5: 039-进度条控件QProgressBar

 

测试QProgressBar

创建文件qprogressbar.py,基本功能用三个水平进度条显示不同文本格式,用一个水平进度条显示繁忙状态,显示一个垂直方向的进度条。完整代码如下:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (QApplication, QWidget, QProgressBar, 
                              QHBoxLayout, QVBoxLayout, QSlider)
 
class DemoProgressBar(QWidget):
    def __init__(self, parent=None):
        super(DemoProgressBar, self).__init__(parent)       
        
        # 设置窗口标题
        self.setWindowTitle('实战PyQt5: QProgressBar Demo!')      
        # 设置窗口大小
        self.resize(400, 300)
        
        self.initUi()
        
    def initUi(self):
     
        hLayout = QHBoxLayout(self)
     
        self.pb1 = QProgressBar(self)
        self.pb1.setValue(10)
        
        self.pb2 = QProgressBar(self)
        self.pb2.setValue(10)
        self.pb2.setFormat('%v')
        
        self.pb3 = QProgressBar(self)
        self.pb3.setValue(10)
        self.pb3.setFormat('%m')
        
        self.pb4 = QProgressBar(self)
        self.pb4.setMinimum(0)
        self.pb4.setMaximum(0)
        
        slider = QSlider(Qt.Horizontal,self)
        slider.setValue(10)
        slider.valueChanged.connect(self.OnSliderValueChanged)
          
        vLayout = QVBoxLayout(self)
        vLayout.setSpacing(10)
        vLayout.addWidget(self.pb1)
        vLayout.addWidget(self.pb2)
        vLayout.addWidget(self.pb3)
        vLayout.addWidget(self.pb4)
        vLayout.addWidget(slider)
   
        self.pbVert = QProgressBar(self)
        self.pbVert.setOrientation(Qt.Vertical)
        self.pbVert.setValue(0)
        self.pbVert.setTextDirection(QProgressBar.BottomToTop)
        self.pbVert.setTextVisible(True)
        
        hLayout.addLayout(vLayout)
        hLayout.addWidget(self.pbVert)
        
        self.setLayout(hLayout)
    
    def OnSliderValueChanged(self, value):
        self.pb1.setValue(value)
        self.pb2.setValue(value)
        self.pb3.setValue(value)
        self.pbVert.setValue(value)
        
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = DemoProgressBar()
    window.show()
    sys.exit(app.exec())

运行结果如下图:

实战PyQt5: 039-进度条控件QProgressBar

测试进度条QProgressBar

本文知识点

  • 进度条的常用方法;
  • 将进度条设置成应用忙的状态。

前一篇: 实战PyQt5: 038-液晶数字屏控件QLCDNumber

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值