python - 我如何查看单击了哪个 tkinter Canvas 形状?

标签 python events canvas tkinter click

我有一个简单的程序,其中一些按钮不是由 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::

但是有没有更短的方法呢?谢谢!

最佳答案

您可以使用标签绑定(bind):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()

关于python - 我如何查看单击了哪个 tkinter Canvas 形状?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49497117/

相关文章:

python - APScheduler 执行后立即退出

python - 如何初始化基(超)类?

events - 哪些 DOM 事件可以绑定(bind)到 DIV 元素?

javascript - Angular 4 : TypeError: this. 函数不是函数

wpf - 在 WPF 中将一张 Canvas 放在另一张 Canvas 之上?

python - 如何从 setup.py 中读取来自 pyproject.toml 的项目依赖项,以避免在两个文件中重复信息?

python - 在 python 中处理非 ascii 代码字符串

javascript - 如何使用 knockout.js 获取文本框 onchange 的值

c# - WP7/8 在使用 C# 的事件后动态更改 InputScope

javascript - 在 Typescript 中通过 For 循环在 Canvas 上绘制线条不会呈现