python - 画一条线或一系列线并计算线的总长度?

标签 python tkinter tcl tk-toolkit

我希望我能足够清楚地解释我的想法,以便您能帮我弄清楚。

enter image description here

假设我单击“开始”,程序开始“记录”鼠标事件,然后单击并创建一个点,单击其他位置并创建另一个点,当创建第二个点时,会绘制一条连接这两个点的线,依此类推,直到我创建了我想要的最后一个点并单击“停止”,然后我得到了组合线的长度。

用 Python 实现这一点有多难?有图书馆可以帮助我实现这样的事情吗?

有没有办法在没有积分的情况下做到这一点?只需单击然后再次单击,就会绘制一条线等等?

最佳答案

不需要额外的库。您只需绑定(bind)<Button-1>即可到事件并使用 event.x 计算距离和event.y .

from tkinter import *
from random import randint

root = Tk()
root.configure(background='DeepSkyBlue4')

class DrawLine:
    def __init__(self,master):
        self.canvas = Canvas(master, width=500, height=500,bg="white")
        self.canvas.bind("<Button-1>", lambda e: self._move(e.x,e.y))
        self.previous_pos = None
        self.total_length = 0
        self.t = Label(master, text=f"Total Length: {self.total_length} pixels",font=('Arial',12),pady=5,bg="DeepSkyBlue4",fg="white")
        self.t.pack()
        self.canvas.pack()
        self.random_position()

    def _move(self,new_x,new_y):
        self.canvas.create_oval(new_x + 5, new_y + 5, new_x - 5, new_y - 5, width=0, fill='red')
        if self.previous_pos:
            old_x, old_y = self.previous_pos
            self.canvas.create_line(old_x, old_y, new_x, new_y, width=2)
            self.total_length += ((new_x - old_x) ** 2 + (new_y - old_y) ** 2) ** (1 / 2)
            self.t.config(text=f"Total Length: {round(self.total_length,2)} pixels")
        self.previous_pos = (new_x, new_y)

    def random_position(self):
        self._move(randint(0,500),randint(0,500))
        root.after(1000,self.random_position)

DrawLine(root)

root.mainloop()

关于python - 画一条线或一系列线并计算线的总长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54757555/

相关文章:

Python pyppeteer 代理使用

python - Tkinter...太空侵略者...射击

Python Tkinter,从类外部修改文本

python - tkinter:是否可以使用 native Tcl/Tk tklib 的 ctext 小部件?

python - 使用 Python 迭代字符串中的每个字符

python - 委托(delegate)给 Python 中的 dict 类

python - 分块处理大文件

python - tkinter中的pong碰撞方法

tcl - 我是否错过了 exp_continue 的目标?

tcl - 如何使用 split 与最后一个字符读取 tcl 中的字符串?