如何在 Tkinter Canvas 上配置动态创建的矩形?

How can I config dynamically created rectangles on Tkinter Canvas?

所以我在 Python 中在 Tkinter 上创建一个图像到单词的匹配游戏。用户可以 select 他们想玩多少 images/words with/match,我需要一个红色矩形来对应每个图像。我用来创建这些矩形的代码如下:

for item in wordList: ##creating the image and its corresponding rectangle
    cv.create_image(xVal*i, 100, image=item[0])
    cv.create_rectangle(xVal*(i-1)+10, 445, xVal*(i+1)-10, 475, fill="red")
    i += 2

其中 wordList 是将向用户显示的图像列表。 我想要做的是,如果用户在 Entry 小部件中输入正确的词,则每个图像的矩形都变成绿色。但是,我不知道如何 access/config 制作的矩形。

有什么想法吗?

每次您在 canvas 上创建项目时,该函数都会 return 一个唯一的 ID。您可以将该 id laster 用作 itemconfigure 方法的第一个参数。您只需要存储这些 ID 并在以后使用它们。

或者,如果 wordList 中的每个单词都是唯一的,您可以将单词用作标签,并将标签视为唯一 ID。在下面的示例中,图像和矩形都将单词作为标记。矩形还有一个标签,就是前缀为 "rect-" 的单词。

for item in wordList: ##creating the image and its corresponding rectangle
    cv.create_image(xVal*i, 100, image=item[0], tags=(item,))
    cv.create_rectangle(xVal*(i-1)+10, 445, xVal*(i+1)-10, 475, fill="red", 
        tags=(item, "rect-"+item))
    i += 2

这样,您就可以为单词 "hello" 配置矩形,如下所示:

cv.itemconfigure("rect-hello", fill="green")