小白之python开发:进度条

今天利用PyQt5来实现一个进度条,当用户进行下载状态,或者系统正在运算状态时,进度条可以给予用户一定的反馈,使得用户知道系统并没有司机,而是在继续运行:
1.导入基本的包,初次使用这个包,依然存在着很多问题。目前UI大的问题就是import里的具体包都会标红,虽不影响最后的运行,但是目前人不知如何处理

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

2.创建窗口类,继承自QWidget窗口模块,在构造方法里申明了基本界面的UI生成方法,以及点击按钮的事件响应方法,使用了信号和槽函数将事件与doAction()方法紧密联系,第一次运行时这里爆出了一个错:argument 1 has unexpected type ‘NoneType’,最后在connect方法里申明了lambda:,才得已解决

class ProgressBar(QWidget):
    # 构造方法
    def __init__(self):
        super().__init__()
        self.initUI()
        # 点击按钮发送事件 信号和槽函数
        self.btn.clicked.connect(lambda: self.doAction())

3.构建UI界面,构建基本的进度条界面,以供用户浏览

    def initUI(self):
        # 通过对称坐标构建窗口组件大小, 宽280 高170
        self.setGeometry(300, 300, 280, 170)
        # 设置标题
        self.setWindowTitle('简易版进度条')
        # 设置图标
        self.setWindowIcon(QIcon('a66.png'))
        # 初始化进度条
        self.pbar=QProgressBar(self)
        # 设置进度条位置
        self.pbar.setGeometry(30, 50, 251, 20)
        #初始化按钮
        self.btn = QPushButton('start',self)
        # 移动按钮位置
        self.btn.move(90,90)
        # 激活进度条 初始化 计时器对象
        self.timer =QBasicTimer()
        self.step = 0
        # 显示界面
        self.show()

4.构建槽函数,指明当用户点击button时的事件响应

    def doAction(self):

        if self.timer.isActive():
            self.timer.stop()
            self.btn.setText('Start')
        else:
            self.timer.start(100,self)
            self.btn.setText('Stop')

5.构建事件处理监听器,始终处于执行状态,跟随这世间的进行

    def timerEvent(self, *args, **kwargs):
        if self.step>=100:
            # 停止进度条
            self.timer.stop()
            self.btn.setText('Good')
        self.step+=1
        # 把每次的值,都赋值给进度条
        self.pbar.setValue(self.step)

6.主程序入口

if __name__ == '__main__':
    # 应用程序
    app = QApplication(sys.argv)
    pbr =ProgressBar()
    sys.exit(app.exec_())

你可能感兴趣的:(个人学习)