Python tkinter删除元组标签

问题描述:

在tkinter窗口中,我有一个有网格的设置,并且每当您单击网格上的一个正方形时,正方形都会改变颜色。如果再次单击同一方块,颜色会变回。Python tkinter删除元组标签

然而,为了做到这一点,我刚刚用相同的两种颜色在同一个正方形上绘画,在点击足够多后创建了数千个图像。

要识别每个网格正方形,我使用网格正方形的左上角坐标。我试着使用tkinter标签,通过传递两个坐标(x,y)的元组到create_rectangle函数,然后调用canvas.delete(coords)。但是,这似乎并不奏效。看来使用

canvas.create_rectangle(whatever, tags=coords)

时,无论喜欢什么数据类型我做COORDS,或无论我做什么与他们的Tkinter似乎做一些奇怪的给他们让我无法用

任何变化将其删除

canvas.delete(coords)

有没有人有解决这个问题?我一直在寻找最小的tkinter文档。 我想要的只是删除网格上的彩色方块,而不是再次覆盖它。

下面是一些代码来说明试图使用相同的原理来删除一个正方形:

from tkinter import * 
master = Tk() 
canvas_width = 850 
canvas_height = 650 

tCanvas = Canvas(master, 
     width=canvas_width, 
     height=canvas_height) 

coordinates = (562, 130) 
tkinterObject = tCanvas.create_rectangle(0, 0, 100, 100, fill='black', tags=(coordinates)) 
tCanvas.delete(coordinates) 

tCanvas.pack() 
mainloop() 

在上面的例子中,方不会被删除。

+0

在http参见“模式”的例子:// effbot。 org/tkinterbook/canvas.htm#Tkinter.Canvas.create_rectangle-method以及它如何使用itemconfig和fill =来更改背景颜色。 –

+0

请创建一个[MCVE](http://*.com/help/mcve)。 –

tags属性应该给一个标签元组。您尝试创建的标签应该是x和y坐标的元组。因此,你需要给它一个元组元组。

请注意在下面的示例中标记属性中使用了逗号,它保证括号中的数据被视为元组。这不是一个tkinter的东西,它只是元组如何在Python中工作。

tag = (x,y) 
canvas.create_rectangle(..., tags=(tag,)) 

话虽这么说,你可以得到被点击使用标签current该项目的项目编号:

the_item = canvas.find_withtag("current") 
+0

谢谢!将逗号添加到标记=坐标的末尾,起作用! 只是一个说明:我有一个网格和正方形背后的背景,所以当前会删除网格和背景。 – underscore