如何在Python的tkinter中绑定“鼠标被按下”?

问题描述 投票:0回答:2

我是 tkinter 的新手,我正在编写一个简单的“绘图”程序。当用户按下鼠标时,它应该绘制画布。

我尝试像这样绑定函数:

def on_mouse_pressed(event):
    """On mouse pressed."""
    print("Mouse is being pressed!")


my_canvas = tkinter.Canvas(width=960, height=540)
my_canvas.pack()

my_canvas.bind('<Button-1>', on_mouse_pressed)

重要的是在按下鼠标时运行此函数,而不是在单击鼠标时运行。如何才能正确绑定呢?

python tkinter mouseclick-event
2个回答
2
投票

对于用鼠标“绘画”之类的东西,我通常使用

bind('<B1-Motion>', <callback>)

当然,您可以使用

B2
B3
将其绑定到其他按钮。

这里需要注意的是,该事件不会立即触发 - 您必须先移动鼠标。不过,您可以轻松地将第二个处理程序绑定到

<'Button-1'>

# this should catch the moment the mouse is pressed as well as any motion while the
# button is held; the lambdas are just examples - use whatever callback you want
my_canvas.bind('<ButtonPress-1>', lambda e: print(e))
my_canvas.bind('<B1-Motion>', lambda e: print(e))

2
投票

如果您想在按下按钮时调用函数,则需要绑定的事件是

<ButtonPress-1>

如果你想在按下按钮的同时移动鼠标时连续调用某个函数,那么你可以绑定到

<B1-Motion>
。这将允许您在用户移动鼠标时进行绘制。

© www.soinside.com 2019 - 2024. All rights reserved.