【问题标题】:I'm trying to make a simple line drawing program with tkinter but it won't work我正在尝试用 tkinter 制作一个简单的线条绘图程序,但它不起作用
【发布时间】:2018-10-25 09:49:20
【问题描述】:

我正在尝试制作这个非常简单的程序,它所做的只是将鼠标的当前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()

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    这样的事情对你有什么作用?

    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。将它们添加到列表中即可解决此问题。

    【讨论】:

      猜你喜欢
      • 2021-10-05
      • 1970-01-01
      • 2022-11-22
      • 1970-01-01
      • 1970-01-01
      • 2022-12-03
      • 2021-12-22
      • 1970-01-01
      • 2019-05-19
      相关资源
      最近更新 更多