专栏首页编程创造城市Python高级进阶#015 pyqt5进度条QProgressBar结合使用qbasictimer

Python高级进阶#015 pyqt5进度条QProgressBar结合使用qbasictimer

一、进度条的使用思想

进度条qprogressbar

使用思想:

1.载入类库

2.初始化类对象

3.设置最小值和最大值

4.时钟的使用QBasicTimer,槽方法对应类库的timerEvent

5.判断什么时候停止加载进度条

这里我们在学习使用进度条的时候,必须要结合使用时钟控件,这样才能让我们看到进度条动的感觉。

二、制作案例

说明如下:

1.界面由进度条和按钮组成

2.进度条的值范围为0~100

3.按钮的状态为“开始”、“停止”、“完成”

4..按钮需要能够控制进度条的运行

三、开发过程知识点介绍

1.导入时钟类

from PyQt5.QtCore 
import QBasicTimer

2.初始化进度条

self.pgb=QProgressBar(self)  #类对象的初始化
self.pgb.move(50,50)   #将进度条移动到指定位置
self.pgb.resize(300,20)   #设置进度条宽高

3.设置进度条的范围

#设置进度条的范围
self.pgb.setMinimum(0)
self.pgb.setMaximum(100)
self.pgb.setValue(50)  

4.时钟控件

作用:每隔多少时间执行一次时钟内部的代码。

时间单位为:毫秒

1秒=1000毫秒

QBasicTimer控件解析

  • isActive方法:返回时钟控件是否开启。如果开启返回true,否则为false
  • Start方法:使得时钟控件开启来。需要传入时间间隔,时间单位为毫秒。

简单的参数使用格式:

Start(时间,self)

Stop方法:使得时钟控件关闭。

timerId方法:返回当前时钟控件的ID,表示某个时钟控件。这个主要用于多个时钟控件使用的时候,区分不同的时钟控件。

5.时钟控件的事件重写

对应的槽方法是Qwidget控件自带的timerEvent事件。

时钟控件的每个多少时间要运行一次的代码就是在timerEvent方法中,我们在使用时钟控件的时候要重写这个方法。

时钟控件状态切换的核心代码:

if self.timer1.isActive():  #检测是否开启
    self.timer1.stop()
    self.btn.setText(“开始”)   #这里的按钮的状态显示的是下一次的行为
else:
    self.timer1.start(100, self)
    self.btn.setText("停止")

四、总结强调

1.掌握Qprogressbar的控件的配置

2.掌握时钟控件的基本使用QBasicTimer

3.理解按钮控制时钟控件达到进度条的运行的思想。

本节知识源代码:

import sys
from PyQt5.QtWidgets import QApplication,QWidget,QPushButton,QProgressBar
from PyQt5.QtCore import QBasicTimer

class MyClass(QWidget):
    def __init__(self):
        super(MyClass, self).__init__()
        self.initUI()
    def initUI(self):
        self.setWindowTitle("刘金玉编程")
        self.setGeometry(300,100,400,300)
        #载入进度条控件
        self.pgb=QProgressBar(self)
        self.pgb.move(50,50)
        self.pgb.resize(300,20)

        #配置一个值表示进度条的当前进度
        self.pv=0

        #申明一个时钟控件
        self.timer1=QBasicTimer()

        #设置进度条的范围
        self.pgb.setMinimum(0)
        self.pgb.setMaximum(100)
        self.pgb.setValue(self.pv)
        #载入按钮
        self.btn=QPushButton("开始",self)
        self.btn.move(50,100)
        self.btn.clicked.connect(self.myTimerState)
        self.show()

    def myTimerState(self):
        if self.timer1.isActive():
            self.timer1.stop()
            self.btn.setText("开始")
        else:
            self.timer1.start(100, self)
            self.btn.setText("停止")

    def timerEvent(self,e):
        if self.pv==100:
            self.timer1.stop()
            self.btn.setText("完成")
        else:
            self.pv+=1
            self.pgb.setValue(self.pv)

if __name__=="__main__":
    app=QApplication(sys.argv)
    mc=MyClass()
    app.exec_()

本文分享自微信公众号 - 编程创造城市(bcczcs),作者:刘金玉编程

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python高级进阶教程022期 pyqt5 qtimer实现图片轮播

    这里的超时的意思是:超时后,要执行什么代码。在timer中体现为去执行什么槽函数。

    刘金玉编程
  • Python高级进阶#006 pyqt5类封装

    刘金玉编程
  • Python高级进阶#020 pyqt5登录窗体实战,综合实践案例

    self.lePassword.setEchoMode(QLineEdit.Password)

    刘金玉编程
  • Django打造大型企业官网(六)

    zhang_derek
  • tkinter带界面实现指定目录生成器

    路径是自己设定好的,然后输入要生成的文件夹数量,然后再点相应的按钮就可以了 下面放上源码,有需要的可以自己进行修改:

    小海怪的互联网
  • ReactiveCocoa,最受欢迎的iOS函数响应式编程库(2.5版),没有之一!

    简介 项目主页: ReactiveCocoa 实例下载: https://github.com/ios122/ios122 简评: 最受欢迎,最有价值的iOS响...

    ios122
  • 接口测试 | 24 requests + unittest集成你的接口测试

    概述 本文就如何结合requests、unittest进行实例演示,如果你还不了解unittest、PO模型,请翻阅公众号前期发布的unittest专题和PO模...

    苦叶子
  • 接口测试 | 24 requests + unittest集成你的接口测试

    概述 本文就如何结合requests、unittest进行实例演示,如果你还不了解unittest、PO模型,请翻阅公众号前期发布的unittest专题和PO模...

    苦叶子
  • 小蛇学python(2)两百行代码实现旅游中国34座大城市最短路径

    直接说基础语法,也许大家不会感兴趣。前言之后的这一章,给大家介绍一下我最近写出来的一个小功能。用python语言实现GA算法来解决TSP问题,希望以此来激发大家...

    用户2145057
  • PyQt5 字体/颜色/打印/打印预览对话框

    用户6021899

扫码关注云+社区

领取腾讯云代金券