Я пытаюсь сделать простую программу рисования линий с помощью tkinter, но она не будет работать - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь сделать эту действительно простую программу, все, что она делает, это сохраняет текущую 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 голосов
/ 25 октября 2018

Как что-то подобное работает у вас?

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, по которым щелкнули.Если щелкнуть более 1 точки на экране, она проведет линию между текущей нажатой точкой и последней нажатой точкой.

Причина, по которой ваш код не работал, заключается в том, что initX и initY забытымежду вызовами на функцию щелчка.Добавление их в список решает это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...