我正在尝试使用tkinter制作一个简单的线条绘制程序,但是它不起作用

时间:2018-10-25 09:49:21

标签: python tkinter

我正在尝试制作一个非常简单的程序,它所做的就是将鼠标的当前x/y位置存储在画布上,然后在您使用它们画一条线时使用单击第二次。我已经绑定了它,并且没有收到任何错误,似乎甚至没有激活。任何帮助将不胜感激

from tkinter import *
main = Tk()
c = Canvas(main, width=600, height=600)
c.pack()
#For colored lines
presses = 0
def click(event):
    if presses == 0:
        initX = int(c.canvasx(event.x))
        initY = int(c.canvasy(event.y))
        presses == 1
    elif presses == 1:
        c.create_line(initX, initY,
        int(c.canvasx(event.x)),
        int(c.canvasy(event.y)))
        presses == 0




c.bind("<Button-1>", click)
mainloop()

1 个答案:

答案 0 :(得分:0)

这样的事情如何为您工作?

from tkinter import *
main = Tk()
c = Canvas(main, width=600, height=600)
c.pack()
line = []

def click(event):
    global line
    X = int(c.canvasx(event.x))
    Y = int(c.canvasy(event.y))
    line.append((X,Y))
    if len(line) > 1:
        startX,startY = line[-2]
        c.create_line(startX, startY, X, Y)

c.bind("<Button-1>", click)
mainloop()

我已经对您的代码进行了一些更改,以存储已单击的X,Y坐标的列表。如果在屏幕上单击了多个点,则会在当前单击的点和最后单击的点之间绘制一条线。

原因是您的代码无法正常工作,因为在click函数的两次调用之间忘记了initX和initY。将它们添加到列表即可解决此问题。