070.PyQt5_QProgressDialog_进度对话框

QProgressDialog 进度对话框

  • 描述
  • 提供了一个缓慢的操作进度反馈
  • 进度对话框用于向用户指示操作将花费多长时间,并演示应用程序尚未冻结
  • 它还可以为用户提供中止操作的机会
  • 继承自:QDialog
  • 功能作用
  • 构造函数
    # 创建对象的同时设置父控件和窗口标志
    QProgressDialog(parent: QWidget = None, flags: Union[Qt.WindowFlags, Qt.WindowType] = Qt.WindowFlags())
    
    # 创建对象的同时设置内容提示文本,取消按钮文本,进度条最小值、进度条最大值、父控件和窗口标志
    QProgressDialog(str1, str2, int1, int2, parent: QWidget = None, flags: Union[Qt.WindowFlags, Qt.WindowType] = Qt.WindowFlags())
    # 参数:
    #       str1:内容提示文本
    #       str2:取消按钮显示文本
    #       int1:进度条最小值
    #       int2:进度条最大值
    #       parent:父对象
    #       flags:窗口标志
    ```
* 弹出
    ```python
    # QProgressDialog对象会自动弹出
    setMinimumDuration(int ms)                  # 设置最小展示前等待时长,默认4秒
    # 如果在等待时间内,进度条满了,就不会弹出控件了
    
    minimumDuration()-> int                     # 获取最小延时展示时长
    
    open(PYQT_SLOT=None)                        # 以模态窗口级别模式弹出控件,传递一个槽函数,点击取消时执行槽函数
    show()
    exec()
    ```
    
* 界面内容设置
    ```python
    setWindowTitle(str)                         # 设置窗口标题
    steLabelText(str)                           # 设置提示文本内容
    labelText()->str                            # 获取提示文本内容
    setCancelButtonText(str)                    # 设置取消按钮文本
    setBar(QProgressBar bar)                    # 设置一个进度条控件替换默认的进度条
    setCancelButton(QPushButton cancelButton)   # 设置一个取消按钮控件替换默认取消按钮
    setLabel(QLabel label)                      # 设置一个提示文本标签,替换默认提示文本标签
    ```
* 数据处理
    ```python
    setMinimum(int minimum)                     # 设置进度条最小值
    minimum()->int                              # 获取进度条最小值
    
    setMaximum(int maximum)                     # 设置进度条最大值
    maximum()-> int                             # 获取进度条最大值
    
    setRange(int minimum, int maximum)          # 通过范围设置进度条最小值和最大值
    
    setValue(int progress)                      # 设置进度条当前值
    value()-> int                               # 获取进度条当前值
    ```
* 是否取消
    ```python
    wasCanceled()                               # 取消按钮是否被按下
    cancel()                                    # 执行取消操作
    ```
* 自动操作
    ```python
    setAutoClose(bool)                          # 设置控件进度满值后释放自动关闭
    # 自动关闭需要满足以下条件
    # 1. setAutoClose必须设置为True
    # 2. setAutoReset必须设置为True
    # 3. 进度条的值必须达到最大值
    autoClose()->bool                           # 获取是否设置自动关闭
    
    # 进度条满值后,会自动重置值为最小值
    setAutoReset(bool)                          # 设置控件进度满值后是否自动重置值为最小值
    autoReset()->bool                           # 获取是否设置自动重置
    
    reset()                                     # 重置当前值为最小值-1
    ```
* **可用信号**
    ```python
    canceled()                                      # 点击了取消按钮时发射该信号
    ```
***
* **示例代码**
* 示例1:QProgressDialog-功能作用
    ```python
    from PyQt5.Qt import *
    import sys
    
    class Windows(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle('QProgressDialog-功能作用')
            self.resize(500, 500)
            self.widget_list()
    
        def widget_list(self):
            self.add_widget()
    
    
        def add_widget(self):
            pass    # 构造函数
            # 方法1
            # pd1 = QProgressDialog(self)
            # 方法2
            pd2 = QProgressDialog('提示消息','取消按钮', 1, 100, self)
    
            pass    # 设置弹出前最小等待时间
            # pd2.setMinimumDuration(10)        # 测试无效
    
            pass    # 弹出
            # pd1.show()
    
            pass    # 界面内容设置
            # pd1.setWindowTitle('进度提示')
            # pd1.setLabelText('下载进度')
            # pd1.setCancelButtonText('取消')
    
            pass    # 进度条范围设置
            # pd1.setMinimum(10)
            # pd1.setMaximum(100)
            pd2.setRange(0, 100)
            # pd1.setValue(20)
            pd2.setValue(20)
    
            pass    # 是否取消
            timer = QTimer(pd2)
            def test():
                if pd2.wasCanceled():
                    timer.stop()
                print('2222')
    
            timer.timeout.connect(test)
            timer.start(1000)
    
            btn = QPushButton("取消pd2", self)
            btn.clicked.connect(pd2.cancel)
    
            pass    # 可用信号
            pd2.canceled.connect(lambda :print('pd2被取消了'))
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        window = Windows()
    
        window.show()
        sys.exit(app.exec_())
    ```

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