繁体   English   中英

如何根据Tkinter的长度创建彩色线条?

[英]How do you create colored lines based on the length with Tkinter?

对于一个项目,我需要用Python绘制线条并根据它的长度为它们着色。 例如,如果线条的长度小于画布长度的25%,则应为绿色。 我是Python的新手,所以我不确定如何处理这个问题。 我已经设置了线路。 他们只需要颜色。 任何有用的链接都会有所帮

这是我的代码。

    class putLine(object):
        def __init__(mouseClick, frame):
            mouseClick.frame = frame
            mouseClick.start_coords = None
            mouseClick.end_coords = None
        def __call__(mouseClick, event):
            coords = event.x, event.y
            if not mouseClick.start_coords:
                mouseClick.start_coords = coords
                return
            mouseClick.end_coords = coords
            mouseClick.frame.create_line(mouseClick.start_coords[0],
                                    mouseClick.start_coords[1],
                                    mouseClick.end_coords[0],
                                    mouseClick.end_coords[1])
            mouseClick.start_coords = mouseClick.end_coords

您可以计算点之间的距离,如果距离大于宽度的25%,则将颜色设置为红色。

from tkinter import *
from cmath import polar 



class Lines(Canvas):

    def __init__(self,master,**kwargs):

        super(Lines, self).__init__(**kwargs)
        self.bind( "<ButtonPress-1>", self.set_start_vector)
        self.bind("<ButtonRelease-1>", self.set_end_vector)           


    def set_start_vector(self, event):

        self.svx, self.svy = (event.x, event.y)


    def set_end_vector(self, event):

        self.evx, self.evy = (event.x, event.y)
        length = polar(complex(self.svx, self.svy)-complex(self.evx, self.evy))[0]

        if(length < self.winfo_width()*0.25):
            color = "green"
        else:
            color = "red"

        self.create_line(self.svx, self.svy, self.evx, self.evy, fill=color)



master = Tk()

w = Lines(master, 
           width=700, 
           height=400)
w.pack(expand = YES, fill = BOTH)

mainloop()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM