我是 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)
重要的是在按下鼠标时运行此函数,而不是在单击鼠标时运行。如何才能正确绑定呢?
对于用鼠标“绘画”之类的东西,我通常使用
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))
如果您想在按下按钮时调用函数,则需要绑定的事件是
<ButtonPress-1>
。
如果你想在按下按钮的同时移动鼠标时连续调用某个函数,那么你可以绑定到
<B1-Motion>
。这将允许您在用户移动鼠标时进行绘制。