tkinter画布封闭的形状基于标签更改点击填充

时间:2018-11-15 16:30:30

标签: python canvas tkinter tags fill

所以我在tkinter python3.0中有两种形状,一种形状包含在另一种形状内。我给了他们两个不同的标签。单击时,我要填充选定的形状,颜色根据项目的标签而不同。

尝试此操作后,我发现如果先填充内部形状,则可以很好地填充外部形状。但是,如果我做相反的操作并首先填充外部形状,则由于某种原因我将无法填充内部形状。我尝试做tag_lower()和tag_raise(),但它们什么都没改变。

下面是代码:

from tkinter import *
root = Tk()

canvas = Canvas(root,width=200,height=200,bg="white")
canvas.grid()
firstRect = canvas.create_rectangle(10,10,30,30, tag="in")
secondRect = canvas.create_rectangle(15,15,25,25, tag="out")


def onclick(event):
    item = canvas.find_closest(event.x, event.y)
    tags = canvas.gettags(item)
    if tags[0] == "in":
        canvas.itemconfig(item, fill="red")
    else:
        canvas.itemconfig(item, fill="blue")

canvas.bind('<Button-1>', onclick)

填充外部形状后,我无法填充内部形状。我将如何处理这个问题?谢谢。

1 个答案:

答案 0 :(得分:0)

添加初始填充:.create_rectangle(...,tag =“ out”,fill ='white')– stovfl 感谢stovfl找出问题所在