进度对话框(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()
设置范围