当前位置: 首页 > news >正文

PyQt6基础_QCharts绘制饼状图

前置:

PyQt6中没有QtCharts包,需要安装 pip install PyQt6-Charts

结果:

1 高亮内容固定突出,并显示文本

2 鼠标悬浮在其他扇区,临时突出显示并显示文本

代码:

import sys
from PyQt6.QtCore import Qt,QSize
from PyQt6.QtGui import QPainter, QPen
from PyQt6.QtWidgets import QApplication,QWidget,QVBoxLayout
from PyQt6.QtCharts import QChart, QChartView, QPieSeries,QPieSliceclass PieChart(QWidget):def __init__(self,data:dict):super().__init__()'''data = {title:strtarget_int: int  # 高亮值的索引data_list: [(str,float,str),(str,float,str)...]}'''self.setMinimumSize(QSize(600,400))self.data = dataself.series = QPieSeries()for item in self.data['data_list']:item_str = f"{item[0]} {item[1]} {item[2]}"self.series.append(item_str,item[1])passself.series.hovered.connect(self.series_hovered)self.slice = self.series.slices()[self.data['target_int']]self.slice.setExploded()self.slice.setLabelVisible()self.slice.setPen(QPen(Qt.GlobalColor.darkGreen, 2))self.slice.setBrush(Qt.GlobalColor.green)self.chart = QChart()self.chart.addSeries(self.series)self.chart.setTitle(self.data['title'])self.chart.legend().hide()self._chart_view = QChartView(self.chart)self._chart_view.setRenderHint(QPainter.RenderHint.Antialiasing)layout = QVBoxLayout()layout.addWidget(self._chart_view)self.setLayout(layout)passdef series_hovered(self,a0:QPieSlice,state:bool):if a0 == self.slice:returnif state:a0.setExploded()a0.setLabelVisible()else:a0.setExploded(False)a0.setLabelVisible(False)passif __name__ == "__main__":app = QApplication(sys.argv)pre_data = {'title':'测试饼状图','target_int':2,'data_list':[('长江水电',100,'10%'),('京沪高铁',200,'20%'),('贵州茅台',400,'40%'),('农业银行',50,'5%'),('长电科技',250,'25%')]}window = PieChart(pre_data)window.show()sys.exit(app.exec())

http://www.xdnf.cn/news/729127.html

相关文章:

  • day14 leetcode-hot100-25(链表4)
  • c++ 模板
  • es6+和css3新增的特性有哪些
  • 敏捷开发在AI团队的适配研究
  • 一文详谈Linux中的时间管理和定时器编程
  • Python训练营打卡Day40(2025.5.30)
  • Replacing iptables with eBPF in Kubernetes with Cilium
  • 云服务器如何自动更新系统并保持安全?
  • LeetCode hot100-8
  • 学习路之PHP--easyswoole_panel安装使用
  • CQF预备知识:Python相关库 -- NumPy 基础知识 - 线性代数 numpy.linalg
  • 51. N-Queens
  • 【学习笔记】深度学习-梯度概念
  • leetcode669.修剪二叉搜索树:递归法利用有序性精准剪枝
  • 三格电子——RS232/485/422转光纤的应用
  • Ubuntu 18.04 上源码安装 protobuf 3.7.0
  • 代购企业如何解决选品管理问题?
  • 历年上海交通大学计算机保研上机真题
  • Hive数据倾斜问题深度解析与实战优化指南
  • 宇树机器狗go2—slam建图(2)gmapping
  • 历年西安交通大学计算机保研上机真题
  • 小程序跳转H5或者其他小程序
  • KubeMQ 深度实践:构建可扩展的 LLM 中台架构
  • 使用FastAPI+Sqlalchemy从一个数据库向另一个数据库更新数据(sql语句版)
  • 在线政治采购系统架构构建指南
  • 【设计模式】责任链模式
  • Scratch节日 | 龙舟比赛 | 端午节
  • 历年南京大学计算机保研上机真题
  • 信息化项目验收测试:MES 系统验收测试的测试重点
  • 海思 35XX MIPI读取YUV422