python - 绘制后更改 tkinter Canvas 对象

标签 python tkinter tk-toolkit

我想在 tkinter 中创建一个由绿色和黑色方 block 组成的 2D map 。每个方 block 都有一个小文字。

canvasObjects = {}
for i, row in enumerate(self.map):
            for j, cell in enumerate(row):
                color = "black" if cell else "green"
                canvasObject[(i,j)] = self.canvas.create_rectangle(
                    r * i, r * j, r * (i + 1), r * (j + 1), outline=color, fill=color)
                canvasObject[(i,j, "text")] = self.land[(i, j)] = self.canvas.create_text(
                    r * i, r * j, anchor=NE, fill="white", text="1", tag=str((i, j)))

稍后我如何在代码中更改对象的属性?例如,如何更改正方形的颜色或更改其中一个正方形的文本?

最佳答案

我无法真正使用您的代码,因为它只是一个更大的代码的片段。然而,这应该演示如何做你想做的事。

from Tkinter import *
root = Tk()
canvas = Canvas(root)
canvas.pack()
rect = canvas.create_rectangle(10,10,70,70, outline="blue", fill="red")
def switch():
    # Use the itemconfig method of a Canvas to alter specific items
    canvas.itemconfig(rect, outline="green", fill="blue")
Button(root, text="switch", command=switch).pack()
root.mainloop()

关于python - 绘制后更改 tkinter Canvas 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17815814/

相关文章:

python - 如何在 Tkinter 中使用相同的对话框来浏览和选择文件和目录?

Python循环通过文本文件读取数据

python - Tkinter 中按钮的透明背景

python - 计算适合 Tkinter 中列表框可视区域的项目数量

python - 使用 python 2.7.3 Mac OSX 10.8.2 导入 Tkinter 失败

python - monkeypatching stdlib 方法是 Python 中的一个好习惯吗?

python - 属性错误 : module 'cv2.cv2' has no attribute 'TrackerMOSSE_create'

python Tkinter 列表框回调 : passing a class-instance-specific callback

Python Tkinter canvas.tag_bind()

linux - 不同平台上的 tcl/tk 复杂脚本支持