bil*_*k16 1 python canvas tkinter tkinter-canvas
我想问一下如何检测Python中的标签tkinter.Canvas()。我已经设置了一个示例程序,其中包含一些基本的画布对象,并且所有这些对象都已分配给某个标签。我想要的是,如果我单击该对象但不知道如何执行此操作,则获取该标记值。
例如当我有这个代码时:
import tkinter
canvas = tkinter.Canvas(width=800, height=400)
canvas.pack()
canvas.create_line(20, 100, 150, 350, tags="lines")
canvas.create_line(50, 20, 300, 20, tags="lines")
canvas.create_oval(200, 250, 300, 350, fill="yellow", tags="ovals")
canvas.create_oval(400, 250, 500, 350, fill="blue", tags="ovals")
for j in range(4):
for i in range(10):
canvas.create_rectangle(i * 70 + 10, j * 60 + 10, i * 70 + 60, j * 60 + 50, fill="lightblue", tags=f"square_{j}_{i}")
def click(coords):
print(coords.x, coords.y)
canvas.bind("<Button-1>", click)
Run Code Online (Sandbox Code Playgroud)
我想获得这些值,例如、 、lines等ovals。请问有人知道如何做吗?哦:)square_5_4square_7_1
您无需循环遍历所有项目即可获取画布项目的标签。单击画布上的任何项目都会分配"current"标签。
您只需使用canvas.find_withtagwithcanvas.gettags或"current"直接传递给gettags,它就会返回与画布项关联的所有标签。
import tkinter
canvas = tkinter.Canvas(width=800, height=400)
canvas.pack()
canvas.create_line(20, 100, 150, 350, tags="lines")
canvas.create_oval(400, 250, 500, 350, fill="blue", tags="ovals")
for j in range(4):
for i in range(10):
canvas.create_rectangle(i * 70 + 10, j * 60 + 10, i * 70 + 60, j * 60 + 50, fill="lightblue", tags=f"square_{j}_{i}")
def click(event):
#currently_clicked = canvas.find_withtag("current")
#if currently_clicked:
print(canvas.gettags("current")) # the first index will contain your desired output
canvas.bind("<Button-1>", click)
canvas.mainloop()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2864 次 |
| 最近记录: |