068.PyQt5_QProgressBar_进度条

QProgressBar 进度条

  • 描述
    • 提供一个水平或垂直进度条
    • 进度条用于向用户提供操作进度的指示,并向他们保证应用程序仍在运行
    • 进度 = (当前值 - 最小值)/ (最大值 - 最小值)
  • 继承自:QWidget
  • 功能作用
    • 构造函数
      QProgressBar(self)                      # 创建对象的同时设置父对象
      
    • 设置范围和当前值
      setMinimum(self, int)                   # 设置最小值
      minimum() -> int                        # 获取最小值
      setMaximum(self, int)                   # 设置最大值
      maximum() -> int                        # 获取最大值
      setRange(self, int, int)                # 设置一个范围值
      setValue(self, int)                     # 设置当前值
      reset()                                 # 重置当前值为最小值-1
      value()                                 # 获取当前值
      # 注意:最大值和最小值如果都是0, 则进入繁忙提示
      
    • 展示文本格式设置
      setFormat(self, str)                    # 设置展示文本的格式
      # 参数:str
      #       你需要显示的文本内容字符串
      #       %p             # 百分比
      #       %v             # 当前值
      #       %m             # 总值
      format() -> str                         # 获取展示文本的格式
      resetFormat()                           # 重置展示文本的格式为百分比
      
    • 展示字符对齐方式
      • 设置展示文本与进度条的对齐方式
      setAlignment(self, Union[Qt.Alignment, Qt.AlignmentFlag])
      # 参数:
      #       Qt.AlignHCenter                 # 水平居中
      #       Qt.AlignLeft                    # 水平居左(测试无效)
      #       Qt.AlignRight                   # 水平居右(测试无效)
      
    • 设置进度条方向
      setOrientation(Qt.Orientation)          # 设置进度条方向
      # 参数:Qt.Orientation
      #       Qt.Horizontal                   # 横向
      #       Qt.Vertical                     # 纵向
      orientation() -> Qt.Orientation         # 获取进度条方向
      # 进度条方向设置成纵向之后,展示文本就看不到了
      
    • 展示文本操作
      setTextVisible(bool)                    # 设置展示文本是否显示
      text()                                  # 获取展示文本内容(不管是否显示都可以获取)
      setTextDirection(QProgressBar.Direction) # 设置展示文本的方向
      # 参数:QProgressBar.Direction
      #       QProgressBar.BottomToTop = 1     # 从底部到顶部
      #       QProgressBar.TopToBottom = 0     # 从顶部到底部
      # 仅仅对于垂直进度条有效
      # 进度条方向设置成纵向之后,展示文本就看不到了
      
    • 倒立外观
      • 设置进度方向是否反向(从右往左,从上往下)
      setInvertedAppearance(bool)             # 设置进度方向是否反向
      
  • 可用信号
    valueChanged(int)                       # 当前值发生变化时发射信号,传递当前值
    

  • 代码示例
  • 示例1:QProgressBar-功能作用
    from PyQt5.Qt import *
    import sys
    
    class Windows(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle('QProgressBar-功能作用')
            self.resize(500, 500)
            self.widget_list()
    
        def widget_list(self):
            self.add_widget()
    
    
        def add_widget(self):
            pass    # 构造方法
            pb1 = QProgressBar(self)
            pb2 = QProgressBar(self)
            pb3 = QProgressBar(self)
            pb4 = QProgressBar(self)
            pb1.resize(400, 30)
            pb2.resize(400, 30)
            pb3.resize(400, 30)
            pb4.resize(400, 30)
            pb1.move(10, 100)
            pb2.move(10, 140)
            pb3.move(10, 180)
            pb4.move(10, 220)
    
            pass    # 设置最大最小值
            # 方法一
            pb1.setMinimum(10)           # 设置最小值
            pb1.setMaximum(100)          # 设置最大值
            # 方法二
            pb2.setRange(0, 100)         # 设置值范围
            pb3.setRange(0, 100)         # 设置值范围
            pb4.setRange(0, 100)         # 设置值范围
    
            pass    # 设置当前值
            pb1.setValue(50)
            pb2.setValue(50)
            pb3.setValue(50)
            pb4.setValue(50)
    
            pass    # 重置当前值
            # pb.reset()
    
            pass    # 展示文本格式设置
            pb1.setFormat('展示文本')
            pb2.setFormat('百分比:%p%')
            pb3.setFormat('当前值:%v')
            pb4.setFormat('总 值:%m')
    
            pass    # 重置展示文本格式
            btn = QPushButton('重置展示文本格式', self)
            btn.move(10, 260)
    
            btn.clicked.connect(lambda :pb1.resetFormat())
    
            pass    # 展示字符对齐方式
            # pb1.setAlignment(Qt.AlignHCenter)
            # pb2.setAlignment(Qt.AlignHCenter)
            # pb3.setAlignment(Qt.AlignRight)         # 测试无效
            # pb4.setAlignment(Qt.AlignLeft)          # 测试无效
    
            pass    # 设置进度条方向
            # pb1.setOrientation(Qt.Vertical)         # 设置为纵向
            # pb1.resize(30, 400)
            # pb1.move(450, 10)
            # pb2.setOrientation(Qt.Horizontal)       # 设置为横向
            #
            # pb1.setAlignment(Qt.AlignTop)           # 进度条设置为纵向之后,展示文本就看不到了
    
            pass    # 展示文本操作
            # pb3.setTextVisible(False)
            # pb1.setTextDirection(QProgressBar.BottomToTop)
            # pb1.setTextDirection(QProgressBar.TopToBottom)
    
            pass    # 倒立外观,进度加载方向反向
            # pb1.setInvertedAppearance(True)
            # pb2.setInvertedAppearance(True)
            # pb3.setInvertedAppearance(False)
    
            pass    # 可用信号
            timer= QTimer(pb2)
    
            def change_progress():
                # print('xxxx')
                if pb2.value() == pb2.maximum():
                    timer.stop()
    
                pb2.setValue(pb2.value()+1)
    
            timer.timeout.connect(change_progress)
            timer.start(1000)
    
            pb2.valueChanged.connect(lambda val: print('进度条当前值:', val))
    
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        window = Windows()
    
        window.show()
        sys.exit(app.exec_())

你可能感兴趣的:(PyQt5,pyqt5,python,gui,python,pyqt,qt)