首页 > 其他分享 >18.PyQt5【基本组件】进度条对话框-QProgressDialog

18.PyQt5【基本组件】进度条对话框-QProgressDialog

时间:2023-01-16 10:57:15浏览次数:46  
标签:progressDialog 进度条 18 self 对话框 进度 组件 QProgressDialog

一、前言

QProgressDialog 进度对话框,向用户提示程序中当前任务的进度信息,用以提示当然任务正在进行,并按百分比显示进度。对话框提供了一个取消按钮,用以向用户提供终止操作的机会。

二、学习目标

1.QProgressDialog常用方法

2.QProgressDialog常用信号

3.QProgressDialog组件的应用

三、知识点

1.【QProgressDialog常用方法】

方法 描述
setLabelText() 设置对话框中标签显示文本
setCancelButtonText() 设置取消按钮的显示文本
setMinimumDuration() 设置最小持续时间
setWindowModality() 设置窗口的模态属性
Qt.NonModal非模态:正常模式
Qt.WindowModal半模态:窗口级模态对话框,阻塞父窗口、父窗口的父窗口及兄弟窗口
Qt.ApplicationModal模态:应用程序级模态对话框,阻塞整个应用程序的所有窗口
setRange() 设置取值范围
setMinimum() 设置最小值
setMaximum() 设置最大值
setValue() 设置当前的进度值,在最小值和最大值之间(包括最小最大值)
wasCanceled() 判断是否按下了取消键
setAutoReset() 设置是否自动重置
setAutoClose() 设置是否自动关闭
open(receiver, member) 打开对话框,并将其cancelled()信号连接到receiver和member指定的插槽,关闭对话框后,信号将从插槽中断开。

2.【QProgressDialog常用信号】

信号 描述
canceled 点击取消键时,触发此信号

3.【QProgressDialog组件的应用】

import sys
from PyQt5.QtCore import Qt, QCoreApplication
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QProgressDialog


class QmyWidget(QWidget):

    def __init__(self, parent=None):
        super().__init__(parent)  # 调用父类的构造函数,创建QWidget窗体
        self.setupUi()

    def setupUi(self):
        """页面初始化"""
        # 设置窗体大小及标题
        self.resize(500, 400)
        self.setWindowTitle("QSlider组件示例")
        # 创建布局
        self.layout = QVBoxLayout()
        # 创建两个按钮组件
        self.button = QPushButton("进度对话框测试", self)
        self.button.clicked.connect(self.setupProgressDialog)  # 为button绑定进度对话框
        # 将组件添加到布局中
        self.layout.addWidget(self.button)
        # 为窗体添加布局
        self.setLayout(self.layout)

    def setupProgressDialog(self):
        """进度对话框"""
        elapsed = 200000
        # QProgressDialog组件定义
        self.progressDialog = QProgressDialog('下载进度', '取消', 0, elapsed, self)
        # QProgressDialog关联信号
        self.progressDialog.canceled.connect(self.on_progressDialog_canceled)
        # QProgressDialog组件设置
        self.progressDialog.setWindowTitle('QProgressDialog组件示例')
        self.progressDialog.setWindowModality(Qt.WindowModal)
        self.progressDialog.show()
        for val in range(elapsed):
            self.progressDialog.setValue(val)       # 设置当前的进度值
            QCoreApplication.processEvents()        # 实时刷新页面
            if self.progressDialog.wasCanceled():   # 判断是否点了取消按钮
                break
        self.progressDialog.setValue(elapsed)

    def on_progressDialog_canceled(self):
        """槽函数"""
        print("progressDialog进度对话框被取消啦!")


if __name__ == '__main__':
    app = QApplication(sys.argv)
    myMain = QmyWidget()
    myMain.show()
    sys.exit(app.exec_())
  • 关键代码

            elapsed = 200000
            # QProgressDialog组件定义
            self.progressDialog = QProgressDialog('下载进度', '取消', 0, elapsed, self)
            # QProgressDialog关联信号
            self.progressDialog.canceled.connect(self.on_progressDialog_canceled)
            # QProgressDialog组件设置
            self.progressDialog.setWindowTitle('QProgressDialog组件示例')
            self.progressDialog.setWindowModality(Qt.WindowModal)
            self.progressDialog.show()
            for val in range(elapsed):
                self.progressDialog.setValue(val)       # 设置当前的进度值
                QCoreApplication.processEvents()        # 实时刷新页面
                if self.progressDialog.wasCanceled():   # 判断是否点了取消按钮
                    break
            self.progressDialog.setValue(elapsed)
    

    进度对话框在两种场景下会关闭,第一种是进度值达到最大值时自动关闭;第二种是点击取消按钮关闭。

标签:progressDialog,进度条,18,self,对话框,进度,组件,QProgressDialog
From: https://www.cnblogs.com/ckxingchen/p/17054874.html

相关文章

  • 19.PyQt5【基本组件】消息对话框-QMessageBox
    一、前言QMessageBox是一种常用的模态对话框,用于显示一些信息性消息,并可选择要求用户通过单击其上的任何一个标准按钮来做出响应。每个标准按钮都有一个预定义的标题、一......
  • 20.PyQt5【基本组件】输入对话框-QInputDialog
    一、前言这是一个预配置的对话框,带有一个文本字段和两个按钮,确定和取消。用户单击Ok按钮或按Enter后,父窗口收集文本框中的输入。用户输入可以是数字、字符串或列表中......
  • 21.PyQt5【基本组件】文件对话框-QFileDialog
    一、前言QFileDialog小部件是一个文件选择器对话框。它使用户能够浏览文件系统并选择要打开或保存的文件。对话框通过静态函数或调用调用exec_()对话框对象上的函数。二......
  • 2.PyQt5【窗口组件】对话框-Dialog
    一、前言QDialog类是对话框窗口的基类。对话框窗口是主要用于短期任务以及和用户进行简要通讯的顶级窗口。QDialog可以是模态对话框也可以是非模态对话框。QDialog支......
  • [LeetCode] 1813. Sentence Similarity III
    Asentenceisalistofwordsthatareseparatedbyasinglespacewithnoleadingortrailingspaces.Forexample, "HelloWorld", "HELLO", "helloworldhel......
  • 代码随想录18 LettCode 513. 找树左下角的值 112. 路径总和 106. 从中序与后序遍历序
    513.找树左下角的值下面运用层序遍历法比较简单,当遍历到一层时设立一个值去不断覆盖一层的队头,即最左边元素classSolution{public:intfindBottomLeftValue(Tr......
  • 「AGC018F」Two Trees
    题目点这里看题目。给定两棵树\(A,B\),两棵树均包含\(n\)个结点。结点编号均从\(1\simn\)。现在需要给每个编号分配一个权值,使得两棵树上的任意子树内,所有的结点编......
  • 180.连续出现的数字
    题目描述编写一个SQL查询,查找所有至少连续出现三次的数字。返回的结果表中的数据可以按任意顺序排列。解题答案selectdistinctl1.NumASConsecutiveNumsfromL......
  • 力扣每日一题2023.1.12---1807. 替换字符串中的括号内容
    给你一个字符串 s ,它包含一些括号对,每个括号中包含一个非空 的键。   比方说,字符串 "(name)is(age)yearsold" 中,有 两个 括号对,分别包含键 "name"和 "age"......
  • Axure 进度条制作
    拖两个矩形,一个用来做边框,另一个用来做进度下图进度条的宽要设为2,如果是1的话,看不到背景色动百分比进度条百分比[[Math.floor(jdt.width/bk.width100)]]进......