当前位置: 首页 > 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())

相关文章:

  • 【nn.GroupNorm】
  • MQTT协议,EMQX部署,MQTTX安装学习
  • 苹果签名工具
  • 每天掌握一个Linux命令 - curl
  • 代码随想录算法训练营第60期第五十二天打卡
  • SpringBoot+Vue+微信小程序校园自助打印系统
  • [SWPUCTF 2023 秋季新生赛]Classical Cipher203分古典密码Base家族栅栏密码
  • 【xmb】内部文档148344596
  • RAG中的chunk以及评测方法
  • 辅助脚本-通用开发工作区目录结构生成脚本解析与实践指南
  • 5G 核心网 NGAP UE-TNL 偶联和绑定
  • C++学习-入门到精通【10】面向对象编程:多态性
  • 论坛系统(4)
  • C++核心编程_赋值运算符重载
  • 多线程(3)
  • 带sdf 的post sim 小结
  • azure web app创建分步指南系列之一
  • CMP401GSZ-REEL混合电压接口中的23ns延迟与±6V输入范围设计实现
  • const ‘不可变’到底是值不变还是地址不变
  • 痉挛性斜颈相关内容说明
  • 上海网站建设培训/资源搜索神器
  • 购物手机网站建设/网推一手单渠道
  • 常熟港口建设费申报网站/怎么做好seo推广
  • 一个网站建设需要什么/百度竞价排名机制
  • 关于网站建设的可行性报告/营销模式有几种
  • 济宁建筑人才网/seo整站优化费用