Python tkinter Canvas Dynamic Create.Line

use*_*768 1 python user-interface canvas tkinter

我想要做的是让用户点击画布上的某个地方,然后点击其他地方并在两点之间绘制一条直线.我是TKinter的新手,经过一些谷歌搜索和搜索,我很难找到一个可靠的答案.

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

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

A. *_*das 5

你所要做的唯一事情是绑定"<Button-1>",并"<ButtonRelease-1>"在画布上:

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()
Run Code Online (Sandbox Code Playgroud)

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