| 224 | bar.setPen(pen) |
| 225 | |
| 226 | def initChart(self): |
| 227 | self._chart = QChart(title="柱状图堆叠") |
| 228 | self._chart.setAcceptHoverEvents(True) |
| 229 | # Series动画 |
| 230 | self._chart.setAnimationOptions(QChart.SeriesAnimations) |
| 231 | self.categories = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"] |
| 232 | names = ["邮件营销", "联盟广告", "视频广告", "直接访问", "搜索引擎"] |
| 233 | series = QBarSeries(self._chart) |
| 234 | for name in names: |
| 235 | bar = QBarSet(name) |
| 236 | # 随机数据 |
| 237 | for _ in range(7): |
| 238 | bar.append(randint(0, 10)) |
| 239 | series.append(bar) |
| 240 | bar.hovered.connect(self.handleBarHoverd) # 鼠标悬停 |
| 241 | self._chart.addSeries(series) |
| 242 | self._chart.createDefaultAxes() # 创建默认的轴 |
| 243 | # x轴 |
| 244 | axis_x = QBarCategoryAxis(self._chart) |
| 245 | axis_x.append(self.categories) |
| 246 | self._chart.setAxisX(axis_x, series) |
| 247 | # chart的图例 |
| 248 | legend = self._chart.legend() |
| 249 | legend.setVisible(True) |
| 250 | # 遍历图例上的标记并绑定信号 |
| 251 | for marker in legend.markers(): |
| 252 | # 点击事件 |
| 253 | marker.clicked.connect(self.handleMarkerClicked) |
| 254 | # 鼠标悬停事件 |
| 255 | marker.hovered.connect(self.handleMarkerHovered) |
| 256 | self.setChart(self._chart) |
| 257 | |
| 258 | |
| 259 | if __name__ == "__main__": |