簡體   English   中英

如何查看單擊哪個tkinter畫布形狀?

[英]How can i see in which tkinter canvas shape is clicked?

我有一個簡單的程序,有些按鈕不是Tkinter自己制作的。 我只是用canvas.create_rectangle和類似的東西制作了它們。 但是問題是:按鈕可以移動。 我可以這樣:

if event.x > c.coords(button)[0] and event.y > c.coords(button)[1] \
and event.x < c.coords(button)[2] and event.y < c.coords(button)[3]:
    ::line of code::

但是有更短的方法嗎? 謝謝!

您可以使用標簽綁定: canvas.tag_bind(<tag>, '<1>', callback) ,只需將<tag>替換為按鈕的項目ID。 這是一個例子:

import tkinter as tk

def on_click(event):
    print('click')
    canvas.move(button1, 10, 5)

root = tk.Tk()
canvas = tk.Canvas(root)
canvas.pack()

button1 = canvas.create_rectangle(10, 10, 50, 50, fill='red')
canvas.tag_bind(button1, '<1>', on_click)

root.mainloop()

您可以使用canvas標簽current ,它指定光標下的項目。 從官方的tcl / tk文檔中:

標簽電流由Tk自動管理; 它適用於當前項目,它是最上面的項目,其繪制的區域覆蓋了鼠標光標的位置(不同的項目類型以不同的方式解釋此問題;有關詳細信息,請參見各個項目類型文檔)。 如果鼠標不在畫布小部件中或不在項目上方,則沒有項目具有當前標簽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM