pyqt5学习笔记(六)

时间:2022-04-24 07:56:29

进度对话框(QProgressDialog)

简述

QT提供了封装的QProcessDialog类实现该功能,该类继承自QDialog类,显示操作的进度。

代码

# -*- coding: utf-8 -*-
# @Date : 2018/6/4 19:28 
# @Author : yw 




import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *


class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.resize(300, 150)
        self.setWindowTitle("进度对话框")

        self.lb = QLabel("数量", self)
        self.lb.move(20, 40)

        self.bt1 = QPushButton('开始', self)
        self.bt1.move(20, 80)

        self.edit = QLineEdit('100000', self)
        self.edit.move(100, 40)

        self.show()

        self.bt1.clicked.connect(self.showDialog)

    def showDialog(self):
        num = int(self.edit.text())
        progress = QProgressDialog(self)
        progress.setWindowTitle("请稍等")
        progress.setLabelText("正在操作...")
        progress.setCancelButtonText("取消")
        progress.setMinimumDuration(5)
        progress.setWindowModality(Qt.WindowModal)
        progress.setRange(0, num)
        for i in range(num):
            progress.setValue(i)
            if progress.wasCanceled():  # 如果按下了取消按钮 则退出加载
                QMessageBox.warning(self, "提示", "操作失败")
                return 

        progress.setValue(num)
        QMessageBox.information(self, "提示", "操作成功")


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
  • setMinimumDuration()

    表示对话框出现的最小持续时间,不然不会出现。对于预期超过minimumDuration的任务,对话框将在minimumDuration时间之后或任何进度设置后立即弹出。如果设置为0,则只要设置任何进度,将始终显示对话框。 默认值为4000毫秒,即4秒。

  • setWindowModality(Qt.WindowModal)

属性 描述
Qt.NonModal 窗口不是模态的, 不会阻止输入其他窗口。
Qt.WindowModal 该窗口对于单个窗口层次结构是模态的,并阻止其父窗口,所有祖父窗口和父窗口的所有兄弟节点的输入。
Qt.ApplicationModal 窗口对应用程序是模态的,并阻止对所有窗口的输入。


  • setRange()

设置范围