我试图用tkinter做一个简单的画线程序,但它做不到

2024-07-05 10:26:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图让这个程序变得非常简单,它所做的只是将鼠标当前的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()

Tags: from程序eventmain画布错误绘制鼠标
1条回答
网友
1楼 · 发布于 2024-07-05 10:26:27

像这样的东西对你有什么用

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个点,它将在当前点击点和最后点击点之间画一条线

代码不起作用的原因是在click函数的两次调用之间忘记了initX和initY。将它们添加到列表可以解决此问题

相关问题 更多 >