【Python】PyQt5 使用QPainter绘制简易仪表盘

本文介绍如何使用Python的PyQt5库创建一个自定义的QWidget类,实现一个具备标题设置和指针指向功能的简易仪表盘。通过重写paintEvent方法,绘制三色环、指针和刻度线,实现仪表盘的视觉效果。可以将此QWidget控件集成到其他窗口应用中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、成果图

功能:可以外部设置 Title 以及指针指向的数字。
在这里插入图片描述

二、自定义QWidget类

首先创建一个QWidget类,初始化一些参数,如窗口名称self.setWindowTitle、窗口大小self.setMinimumSize、要绘制的图标题self._title等。设置字体格式、LCD初始化。
这里不喜欢Qt自带的颜色,所以在网上用取色器找到了喜欢的颜色的RGB参数,配合QColor设置了喜欢的颜色。

class Drawing(QWidget):
    def __init__(self, parent=None):
        super(Drawing, self).__init__(parent)
        self.setWindowTitle("QPainter测试")
        self.setMinimumSize(600, 200)
        # self.setMaximumSize(700, 700)
        self._title = 'Title____'

        # 颜色设置
        self.pieColorStart = QColor(63, 191, 127)  # 绿色
        self.pieColorMid = QColor(63, 127, 191)  # 蓝色
        self.pieColorEnd = QColor(203, 72, 72)  # 红色
        self.pointerColor = QColor(72, 203, 203)  # 青色
        
        # 设置字符
        self.font = QFont("宋体", 8)
        self.font.setBold(True)
        # LCD初始化
        self.lcd_init()
        # 其他设置
        ...
        ...

编写 set 方法,以便后续可以通过调用 set 方法修改 Title 以及指针的 Value :

def setTitle(self, title):
    self._title = title

def setValue(self, value):
    self.currentValue = value

三、重写paintEvent

进行坐标轴变换,以及坐标刻度自适应。在开始绘画之前启用反锯齿,使画出的曲线更平滑。

def paintEvent(self, event):
    # 坐标轴变换 默认640*480
    width = self.width()
    height = self.height()

    painter = QPainter(self)  # 初始化painter
    painter.translate(width / 2, height / 2)  # 坐标轴变换,调用translate()将坐标原点平移至窗口中心

    # 坐标刻度自适应
    side = min(width, height)
    painter.scale
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值