у меня есть этот код, в котором пользователь может рисовать используя свою мышь:Tkinter: сохранить координаты нарисованной линии заданной ширины
from Tkinter import *
class Test:
def __init__(self):
self.b1="up"
self.xold=None
self.yold=None
def test(self,obj):
self.drawingArea=Canvas(obj)
self.drawingArea.pack()
self.drawingArea.bind("<Motion>",self.motion)
self.drawingArea.bind("<ButtonPress-1>",self.b1down)
self.drawingArea.bind("<ButtonRelease-1>",self.b1up)
def b1down(self,event):
self.b1="down"
def b1up(self,event):
self.b1="up"
self.xold=None
self.yold=None
def motion(self,event):
if self.b1=="down":
if self.xold is not None and self.yold is not None:
event.widget.create_line(self.xold,self.yold,event.x,event.y,fill="red",width=4,smooth=TRUE)
self.xold=event.x
self.yold=event.y
if __name__=="__main__":
root=Tk()
root.wm_title("Test")
v=Test()
v.test(root)
root.mainloop()
Интересно, как сохранить координаты нарисованной линии зная, что толщина линии равна 4 (ширина может быть любым целым числом менее 10)?
Без опции толщины ответ очевиден для меня.
Заранее спасибо.
Что именно вы подразумеваете под «координатами нарисованной линии»? Вы хотите, чтобы вы выбрали координаты всех пикселов? Также может помочь показать «очевидный» ответ без опции толщины. – fhdrsdg
@fhdrsdg теперь я изо всех сил пытаюсь получить координаты пойнтов, только если толщина 1 (по умолчанию) :(Не так очевидно, как я думал –
Вот что я подумал, и именно поэтому я спросил. Что вы хотите сделать с координатами, хотя? Если вы хотите нарисовать те же строки на изображении, вы можете попробовать [ImageDraw module] (http://effbot.org/imagingbook/imagedraw.htm#tag-ImageDraw.Draw.line) в PIL. Если вы хотите их по любой другой причине, также может быть лучший способ сделать это, чем пытаться найти все координаты. – fhdrsdg