PyQt5_QProgressDialog_进度对话框

霸气de小男生 提交于 2020-02-11 19:53:00

QProgressDialog 进度对话框,向用户提示当前程序的进度信息,演示当前程序正在进行,向用户提供终止操作的机会。

from PyQt5.Qt import *

class MyWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('QProgressDialog')
        self.resize(500,500)
        self.iniUI()

    def iniUI(self):
        pd = QProgressDialog(self)
        ##########################默认情况下 四秒钟之后会自动弹出进度对话框,满值自动关闭
        ##########################         窗口级别的模态窗口open()弹出
        pd.setValue(95)
        pd.setMinimumDuration(1000)     # 一秒钟之后自动弹出进度对话框
        pd.setAutoClose(True)           # 取消满值自动关闭(默认情况下满值自动重置 )
        pd.setAutoReset(True)           # 取消自动重置   (默认情况下满值自动重置 )
        pd.setLabelText('当前进度的值')
        pd.setCancelButtonText('用来取消按钮')
        pd.setRange(0, 100)  # 进度对话框的范围设定
        ##############################################进度条对话框 弹出方法
        #
        # 现在需求:
        #           进度条对话框弹出方法 有两种
        #
        # 解决方法:
        #           一.自动弹出,默认四秒钟之后自动弹出
        #           二,调用 pd.open(func)  func在进度对话框被取消时执行
        pd.open(lambda :print('对话框被取消'))

        #############################进度条对话框 弹出方法


        ##############################################进度对话框 构造函数

        pd1 = QProgressDialog('当前进度值','取消按钮',0,100,self)
        pd1.setLabelText('当前进度的值')
        pd1.setCancelButtonText('用来取消按钮')
        pd.setRange(0, 100)         #进度对话框的范围设定
        pd1.setValue(50)
        pd1.move(pd.x(),pd.y()+200)
        pd1.setMinimumDuration(1000)#一秒钟之后自动弹出
        #############################进度对话框 构造函数


        ##############################################进度对话框 具体参数设定
        #
        # 现在需求:
        #           实现进度对话框到达最大值之后自动关闭,
        #
        # 解决方法:
        #           满足三点
        #                   pd.value() == pd.maximum()
        #                   pd.setAutoReset(True)
        #                   pd.setAutoClose(True)
        #
        timer = QTimer(pd)
        def progress_chg():
            if pd.value()+1>=pd.maximum() or pd.wasCanceled():
                timer.stop()
            # 如果使用else语句 则到setValue(99) 时间就停止了,始终维持在99不变了
            # else:
            #     pd.setValue(pd.value() + 1)
            pd.setValue(pd.value() + 1)

        timer.timeout.connect(progress_chg)
        timer.start(1000)               #每隔一秒发射一次信号
        #############################进度对话框 具体参数设定


        ##############################################进度对话框 信号相关
        #
        #
        #
        pd.canceled.connect(lambda :print('进度对话框被取消'))
        #############################进度对话框 信号相关


if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)


    win = MyWindow()
    win.show()
    sys.exit(app.exec_())

在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!