【没钱买ps,PyQt自己写】Day 19 - 使用 QProgressBar,制作进度条的功能

看完这篇文章你会得到的成果图

前言

这篇我们要来学一个新的东西 QProgressBar!
QProgressBar 就是一个能显示出进度条效果的酷功能哦!

之前内容的重点复习 (前情提要)

我们接下来的讨论,会基於读者已经先读过我 day5 文章 的架构下去进行程序设计
如果还不清楚我程序设计的逻辑 (UI.py、controller.py、start.py 分别在干麻)
建议先阅读 day5 文章後再来阅读此文。

https://www.wongwonggoods.com/python/pyqt5-5/

此篇文章的范例程序码 github

https://github.com/howarder3/ironman2021_PyQt5_photoshop/tree/main/day19_progress_bar

UI 设计部份 (UI.py)

我们从 Display Widgets 中选取 Progress Bar,
从预览中,我们就已经可以感觉到进度条的效果罗!

另外我们拉一个按钮,作为「开始键」。

转换成 UI.py

一样的编译指令,我们加上 -x (也可不加),
我们就可以先检视看看转换後的视窗是不是跟我们想像的一样。

转换 day19.ui -> UI.py

pyuic5 -x day19.ui -o UI.py

执行看看 UI.py 画面是否如同我们想像

一样,这程序只有介面 (视觉上的呈现),没有任何互动功能

  • 看看我们制作出来的介面
python UI.py

controller 设计部份 (controller.py)

单纯控制 QProgressBar 很简单,我们只需要设定

  • 上限值:setMaximum
  • 增加值:setValue

注意都是 「整数 int」 的变化, 更改值请以更改上限为主,让他自己去换算。
使用 「小数」 会跳错!!!

def setup_control(self):
    self.ui.pushButton.clicked.connect(self.start_progress) 
    
def start_progress(self):
    max_value = 100
    self.ui.progressBar.setMaximum(max_value)

    for i in range(max_value):
        time.sleep(0.1)
        self.ui.progressBar.setValue(i+1)

设定主程序 setup_control()

  • self.ui.pushButton.clicked.connect(self.start_progress):设定按键功能,与 start_progress() 这个 function 串接

按钮启动的程序 start_progress()

设定上限值为 100

  • max_value = 100
  • self.ui.progressBar.setMaximum(max_value)

设定每次增加 1

  • for i in range(max_value):
  • time.sleep(0.1):休息 0.1 秒
  • self.ui.progressBar.setValue(i+1) 每次值增加 1

执行结果

照我们 day5 的程序架构,我们执行

python start.py

按下 GO 之後,进度条就顺利执行罗!


★ 本文也同步发於我的个人网站(会有内容目录与显示各个小节,阅读起来更流畅):【PyQt5】Day 19 - 使用 QProgressBar,制作进度条的功能


<<:  Flutter基础介绍与实作-Day20 旅游笔记的实作(1)

>>:  Day19 iPhone捷径-电池健康度

变更管理和变更控制(Change Management and Change Control)

什麽是变化,我们在变化什麽? 当涉及到更改时,至关重要的是定义什麽是更改并阐明我们正在更改的内容。...

使用Vertex汇出的模型 | ML#Day26

模型训练完成後,除了使用Vertex的一键部署,若想要自行部署或在自己电脑上使用该怎麽做呢? 跟大家...

Day9 周末居酒屋-明太子山药 ft 香煎牛小排、鱼卵沙拉

居酒屋的热门料理,一直很想要试试看明太子料理,疫情期间比较没办法跟三五好友一起到居酒屋,周末就在家自...

在 WordPress 每页文章底下自动附加 FB 粉丝页或社团连结

当我们在 WordPress 写好的每一篇文章,对每一位看文章的读者来说都会得到一点知识价值,而为了...

30-26 之 DDD 战略设计 2 - 实作方法之 Event Storm

事件风暴 Event Storm 事件风暴 : 理解、访谈需求 目的 : 将商业流程视觉化,找出核心...