【发布时间】:2017-05-06 18:30:37
【问题描述】:
我正在使用 Tkinter 在 python 中编写一个简单的 noughts-and-crosses 游戏,并且希望仅当您将鼠标悬停在它们上方时才显示 Os。为此,我知道我需要添加一个事件绑定,但不知道怎么做,因为当我创建一个圆(弧)时,我没有返回一个对象,而是一个 ID 号。如何使用此 ID 号创建事件绑定?
【问题讨论】:
标签: python events tkinter binding graphic
我正在使用 Tkinter 在 python 中编写一个简单的 noughts-and-crosses 游戏,并且希望仅当您将鼠标悬停在它们上方时才显示 Os。为此,我知道我需要添加一个事件绑定,但不知道怎么做,因为当我创建一个圆(弧)时,我没有返回一个对象,而是一个 ID 号。如何使用此 ID 号创建事件绑定?
【问题讨论】:
标签: python events tkinter binding graphic
我建议不要使用 ID 号来创建事件绑定,而是使用标签系统来解决这个问题。创建椭圆形对象时,例如canvas.create_oval(100, 100, 200, 200),在括号内添加 ,tag="tag_name" 以将标签应用于您创建的对象。然后,您可以显式绑定到此标记,例如使用画布的 tag_bind 函数。
在创建一个带有“椭圆”标签的椭圆之后,您可以创建类似的东西:
canvas.tag_bind("oval", "<ButtonPress-1>", pressed_oval)
只有当用户点击你给标签“椭圆”的对象(并将事件传递给它)时,这才会调用你的函数pressed_oval()。
希望这可以帮助您入门!
我会注意到,要使tag_bind 起作用,对象仍然必须在画布上,因此不要将椭圆的状态更改为隐藏或打包忘记它们,只需在颜色之间切换椭圆填充即可(fill="")。
【讨论】: