【问题标题】:Is there a way to update the colour of these canvases?有没有办法更新这些画布的颜色?
【发布时间】:2018-08-07 18:46:50
【问题描述】:
row1a = Canvas(firstFrame,width=54,height=54,bg="gray")
row1a.pack(side=LEFT)
row1b = Canvas(firstFrame,width=54,height=54,bg="gray40")
row1b.pack(side=LEFT)
row1c = Canvas(firstFrame,width=54,height=54,bg="gray")
row1c.pack(side=LEFT)
row1d = Canvas(firstFrame,width=54,height=54,bg="gray40")
row1d.pack(side=LEFT)
row1e = Canvas(firstFrame,width=54,height=54,bg="gray")
row1e.pack(side=LEFT)
row1f = Canvas(firstFrame,width=54,height=54,bg="gray40")
row1f.pack(side=LEFT)
row1g = Canvas(firstFrame,width=54,height=54,bg="gray")
row1g.pack(side=LEFT)

row = 1
column = b

有没有办法我可以使用 canvas.config(bg="blue") 之类的东西来更新“row1b”画布的颜色。
这些画布还有很多,所以我不能真正为每个画布使用 row1b.config(bg="blue") 。 谢谢!

【问题讨论】:

  • 你为什么不试试看呢?如果您将画布保存在一个列表中而不是一堆不相交的变量中,那将是微不足道的。
  • 如何将画布保存在列表中?

标签: python-3.x tkinter tkinter-canvas


【解决方案1】:

与任何小部件一样,您可以在创建后更改其选项。

由于您要创建许多画布,因此最好的解决方案是将它们存储在列表或字典中。由于您似乎想用数字和字母来引用它们,因此字典可能是最好的解决方案。

例如,要在循环中创建画布对象,您可以执行以下操作:

canvases = {}
row = 1
for column in ('a', 'b', 'c', 'd', 'e', 'f', 'g'):
    index = (row, column)
    canvases[index] = Canvas(...)

稍后,您可以通过canvases 字典和configure 命令更改任何单个画布的颜色:

canvases[(1,'c')].configure(background="blue")

【讨论】:

  • 非常感谢我会那样做的!
猜你喜欢
  • 1970-01-01
  • 2022-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
相关资源
最近更新 更多