python-3.x - 如何通过 for 循环为每个模块添加不同的颜色?喜欢下面的评论吗?
问题描述
如何为每个模块添加颜色?我试过用
self.color ={"red","green","yellow","blue","agua","orange"}
填充,但这不起作用
for i in self.__pop_percentage.values():
self.extent = (i/self.__sum_pop_percentage*360)
self.canvas.create_arc(400,400,100,100,start=self.start,extent=(self.extent),fill="red")
print(i)
self.start = self.start + self.extent
self.count = self.count +1
self.canvas.pack()
#self.canvas.create_arc(400,400,100,100,start=0,extent=130.212,fill="red")
#self.canvas.create_arc(400,400,100,100,start=130.212,extent=121.068,fill="green")
#self.canvas.create_arc(400,400,100,100,start=251.28,extent=19.332,fill="yellow")
#self.canvas.create_arc(400,400,100,100,start=270.612,extent=17.996,fill="blue")
#self.canvas.create_arc(400,400,100,100,start=288.608,extent=14.9,fill="aqua")
#self.canvas.create_arc(400,400,100,100,start=303.508,extent=56.492,fill="orange")
#self.canvas.pack()
解决方案
您可以定义颜色列表并从该列表中选择下一种颜色:
colors = ["red", "green", "yellow", "blue", "aqua", "orange"]
for color_index, i in enumerate(self.__pop_percentage.values()):
...
self.canvas.create_arc(..., fill=colors[color_index])
请注意,如果您的值多于颜色数,这将失败。如果是这种情况,您可以循环使用颜色:
self.canvas.create_arc(..., fill=colors[color_index % len(colors)])
推荐阅读
- html - 如何制作带有全角 visjs 的 flexbox 布局(2 行 - (2 列和 1 列))?
- r - 我可以将 shinytest 与从 Rmd 模板生成 PDF 的 Shiny 应用程序一起使用吗?
- r - 如何创建一个名为 Sigma 的对象?
- google-cloud-platform - PythonOperator 或 SimpleHttpOperator 发出 HTTP 获取请求并将结果保存到 GCP 存储
- pandas - Pandas - 使用 pandas.Series.all 过滤 DataFrame 的最有效方法是什么
- spring-boot - Spring Webclient 多部分/表单数据请求
- reporting-services - 尝试根据是否有任何行具有特定值在 SSRS 报告上设置行可见性
- reactjs - React - 使用 Context API 状态管理提交后清除表单
- python - 如何将浮点元组转换为整数,而无需在 Python 中转换每个单独的元组元素?
- javascript - 控制台返回未定义;eval 返回正常值