赞
踩
该控件是参考了feiyangqingyun的广告占比图(Qt作品),更改了配色,重用PyQt5编写而成。原版在此:
https://blog.csdn.net/feiyangqingyun/article/details/98472081
先上成品图
当鼠标停在饼圆对应区域,该区域面积会扩大弹出,同时,对应下方的图例字体会变成黄色。
该项目的重难点主要有两个:1. 绘制饼圆; 2. 鼠标进入事件。
当用户对窗口进行拉伸,移动,或者鼠标悬停在某个扇形饼圆区域,则触发paintEvent 对窗口元素进行重绘,其核心代码如下:
def paintEvent(self, event):
# 绘制准备工作, 启用反锯齿
painter = QtGui.QPainter(self)
painter.setRenderHints(QtGui.QPainter.Antialiasing | QtGui.QPainter.TextAntialiasing)
# 平移坐标中心,等比例缩放
width = self.width()
height = self.height()
side = min(width, height)
painter.translate(width / 2, height / 2) # 坐标中心移至窗口中心位置
painter.scale(side / 200.0, side / 200.0) # 坐标刻度缩放为原来的(side/200)倍
# 画圆
self.drawOuterCircle(painter) # 绘制外侧圆
self.drawMidCircle
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。