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()
在上面的例子中,方不会被删除。
tags
属性应该给一个标签元组。您尝试创建的标签应该是x和y坐标的元组。因此,你需要给它一个元组元组。
请注意在下面的示例中标记属性中使用了逗号,它保证括号中的数据被视为元组。这不是一个tkinter的东西,它只是元组如何在Python中工作。
tag = (x,y)
canvas.create_rectangle(..., tags=(tag,))
话虽这么说,你可以得到被点击使用标签current
该项目的项目编号:
the_item = canvas.find_withtag("current")
谢谢!将逗号添加到标记=坐标的末尾,起作用! 只是一个说明:我有一个网格和正方形背后的背景,所以当前会删除网格和背景。 – underscore
在http参见“模式”的例子:// effbot。 org/tkinterbook/canvas.htm#Tkinter.Canvas.create_rectangle-method以及它如何使用itemconfig和fill =来更改背景颜色。 –
请创建一个[MCVE](http://stackoverflow.com/help/mcve)。 –