[英]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.