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

本教程讲解如何在PyQt5中使用QProgressBar控件和QBasicTimer创建动态进度条。通过设置最大值、最小值,结合时钟控件模拟进度变化,实现开始、停止、完成状态的按钮控制。文中包含详细步骤及源代码示例。

本期GUI界面,我们继续学习新的控件Qprogressbar。

知识回顾

1.滑动控件qslider

控件设置的关键:设置最大值、最小值,绝对范围。

2.核心类库QtCore,枚举类Qt

核心枚举类的使用,可以帮助我们对代码的理解。

一、进度条的使用思想

进度条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 sysfrom PyQt5.QtWidgets import QApplication,QWidget,QPushButton,QProgressBarfrom PyQt5.QtCore import QBasicTimerclass 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+=1self.pgb.setValue(self.pv)if __name__=="__main__":app=QApplication(sys.argv)mc=MyClass()app.exec_()

长按关注公众号

相关文章:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值