百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

PyQt5的介绍和画圆形进度条的代码分析

haoteby 2025-02-14 23:21 20 浏览

1、PyQt5的介绍:

是作为一套Python模块实现的。

是一个运行在所有主流操作系统上的跨平台和多平台组件。

是一套绑定Qt5的应用程序框架,而Qt库是一套最有用的GUI库。

PyQt5是由Riverbank Computing开发的。


2.安装:

sudo pip3 install pyqt5

3.用PyQt5来制作一个动态的圆形进度条的效果图,如下:


4.代码分析:

4.1 第1步:

#---第1步---导出模块---
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import QApplication, QWidget,QLabel
from PyQt5 import *

4.2 第2步:

#---第2步---定义圆形进度条类的定义---
class CirBar(QWidget):
    #---第2-1步---初始化定义---
    def __init__(self):
        super(CirBar, self).__init__()
        # 去边框,去掉边框也就是会去掉右上角退出的“×”,好看,但是强制退出要报错,小bug,可以继续优化
        self.setWindowFlags(Qt.FramelessWindowHint)  
        self.setAttribute(Qt.WA_TranslucentBackground)  # 设置窗口背景透明

        self.persent = 0
        self.my_thread = MyThread()
        self.my_thread.my_signal.connect(self.GenUpdate)
        self.my_thread.start()
    #定义更新
    def GenUpdate(self, p):
        self.persent = p
    #定义绘画事件
    def paintEvent(self, event):
        #360°分成100等分
        rotateAngle = 360 * self.persent / 100
        # 绘制准备工作,启用反锯齿
        painter = QPainter(self)
        #启用反锯齿,如果本行注释,那么圆的外线有锯齿,不光滑。
        painter.setRenderHints(QtGui.QPainter.Antialiasing)

        #外圆底色是blue,注意100,100和内圆的96和96,说明外圆不是正圆,稍大一点,有露出外圆底色一点弧形蓝色
        painter.setBrush(QBrush(QColor("blue")))
        #250和250是圆点的坐标
        painter.drawEllipse(250, 250, 100, 100)  # 画外圆
 
        #内圆底色是黄色
        painter.setBrush(QBrush(QColor("yellow")))
        #250和250是圆点的坐标
        painter.drawEllipse(250, 250, 96, 96)  # 画内圆
        #角度渐变(QConicalGradient)
        gradient = QConicalGradient(50, 50, 91)
        #进度条的画笔颜色
        gradient.setColorAt(1, QColor("red"))
        self.pen = QPen()
        self.pen.setBrush(gradient)  # 设置画刷渐变效果
        self.pen.setWidth(8)
        self.pen.setCapStyle(Qt.RoundCap)
        painter.setPen(self.pen)
        #250和250是圆点的坐标
        painter.drawArc(QtCore.QRectF(250, 250, 98, 98), int((90 - 0) * 16), -int(rotateAngle * 16))  # 画圆环
 
        #中间画笔的颜色,显示动态百分数的颜色
        painter.setPen(QColor("green"))
        #画中间动态百分比的文字设置和250和250是圆点的坐标
        painter.drawText(QtCore.QRectF(250, 250, 98, 98), Qt.AlignCenter, "%d%%" % self.persent)  # 显示进度条当前进度
        self.update()

4.3 第3步:

#---第3步---创建线程
class MyThread(QThread):
    my_signal = pyqtSignal(int)
    p = 0
    #初始化线程
    def __init__(self):
        super(MyThread, self).__init__()
    #运行线程
    def run(self):
        while True:
            if self.p < 100:
                self.p += 1
                self.my_signal.emit(self.p)
                self.msleep(100)

4.4 第4步:

#---第4步---
if __name__ == '__main__':
    app = QApplication(sys.argv)

    CirBar = CirBar()
    CirBar.show()
    sys.exit(app.exec_())

#如果去边框后好看,但是没有窗口右上角的‘×’退出,强制退出,会报错,不用管它。
#The X11 connection broke (error 1). Did the X11 server die?

相关推荐

如何为MySQL服务器和客户机启用SSL?

用户想要与MySQL服务器建立一条安全连接时,常常依赖VPN隧道或SSH隧道。不过,获得MySQL连接的另一个办法是,启用MySQL服务器上的SSL封装器(SSLwrapper)。这每一种方法各有其...

OpenVPN客户端配置_openvpn客户端配置文件解析

...

k8s 证书问题排查_k8s dashboard 证书

从去年开始一些老项目上陆陆续续出现一些列的证书问题,(证书原理这里就不说了,官方文档一堆)多数刚开始的表现就是节点的kubelet服务起不来,节点状态NotReady表现日志如下failed...

企业级网络互通方案:云端OpenVPN+爱快路由器+Win11互联实战

企业级网络互通方案:OpenVPN搭建公有云+爱快路由器+Win11三地互联实战指南「安全高效」三地局域网秒变局域网实施环境说明...

OpenV** Server/Client配置文件详解

Server配置详解...

接口基础认知:关键信息与合规前提

1.核心技术参数(必记)...

S交换机通过SSH登录设备配置示例(RADIUS认证+本地认证独立)

说明:●本示例只介绍设备的认证相关配置,请同时确保已在RADIUS服务器上做了相关配置,如设备地址、共享密钥、创建用户等配置。●通过不同的管理域来实现RADIUS认证与本地认证两种方式同时使用,两...

SSL证书如何去除私钥密码保护_ssl证书怎么取消

有时候我们在生成证书的时候可以加入了密码保护。然后申请到证书安装到了web服务器。但是这样可能会带来麻烦。每次重启apache或者nginx的时候,都需要输入密码。那么SSL证书如何去除私钥密码保护。...

SSL证书基础知识与自签名证书生成指南

一、证书文件类型解析...

S交换机通过SSH登录设备配置示例(RADIUS认证)

说明:本示例只介绍设备的认证相关配置,请同时确保已在RADIUS服务器上做了相关配置,如设备地址、共享密钥、创建用户等配置。假设已在RADIUS服务器上创建了用户名yc123,密码test#123。对...

HTTPS是什么?加密原理和证书。SSL/TLS握手过程

秘钥的产生过程非对称加密...

HTTPS TLS握手流程_进行tls握手

1.客户端向服务器发送`ClientHello`消息,包括支持的TLS版本、加密套件、随机数等信息。2.服务器收到`ClientHello`消息后,解析其中的信息,并根据配置选择一个加密套件。3....

Spring Boot 单点登录(SSO)实现_spring boot 单点登录jwt

SpringBoot单点登录(SSO)实现全指南单点登录(SingleSign-On,SSO)是一种身份验证机制,允许用户使用一组凭证登录多个相关但独立的系统。在微服务架构和企业级系统中,SS...

源码分享:在pdf上加盖电子签章_pdf如何加盖电子公章

在pdf上加盖电子签章,并不是只是加个印章图片,。而是要使用一对密钥中的私钥对文件进行签字。为啥要用私钥呢?很简单,因为公钥是公开的,其他人才可以用公钥为你证明,这个文件是你签的。这就是我们常说的:私...

微信支付商户API证书到期 怎么更换

微信支付商户API证书到期更换是一个非常重要的操作,需要仔细按照流程进行。如果证书过期,所有通过API的支付、退款等操作都会失败,将直接影响您的业务。请按照以下详细步骤进行操作:重要前提:分清...