Skip to main content
 首页 » 编程设计

Python tkinter Canvas 动态创建.Line

2025年05月04日22dyllove98

我想要做的是让用户点击 Canvas 上的某处,然后点击其他地方并在两点之间绘制一条直线。我是 TKinter 的新手,经过谷歌搜索和搜索后,我无法找到可靠的答案。

我一直在考虑的方式是,应该有一个 onclick 事件传递 Canvas 上的鼠标坐标,然后有一个 onrelease 事件传递 Canvas 上的这些坐标,从而在它们之间创建一条线。该行必须是一个对象,然后我可以在某个时候通过另一个按钮将其删除,但这是一个单独的问题。

任何帮助将不胜感激,甚至任何指向可能有帮助的文章/教程的链接

请您参考如下方法:

您唯一需要做的就是绑定(bind) "<Button-1>"和 "<ButtonRelease-1>"到 Canvas :

from Tkinter import Tk, Canvas 
 
start = None 
 
def onclick_handler(event): 
    global start 
    start = (event.x, event.y) 
 
def onrelease_handler(event): 
    global start 
    if start is not None: 
        x = start[0] 
        y = start[1] 
        event.widget.create_line(x, y, event.x, event.y) 
        start = None 
 
master = Tk() 
canvas = Canvas(master, width=200, height=200) 
canvas.bind("<Button-1>", onclick_handler) 
canvas.bind("<ButtonRelease-1>", onrelease_handler) 
canvas.pack() 
master.mainloop() 

我根本不喜欢使用全局变量,将所有小部件和相关函数包装在一个类中要干净得多。但是,作为一个例子,我认为已经足够清楚了。