您好我正在开发用于处理AI(Adobe illustrator)文件的用户界面,我使用标记功能对行组进行了分组。我想知道在点击时选择了哪一行(例如,哪个标签),但我无法弄清楚,如函数click_poligono
总是得到最后一个标签,对我的方式有何帮助# 39;我应该这样做?
我的部分代码是:
def click_poligono(self,event,poligono):
self.canvas.itemconfigure('poligono%s'%poligono , fill = 'blue')
def cambio_listbox(self,*args,**kwargs):
<-------Mysql queries and processes------->
for i in range(len(matriz_start)):
print i
self.canvas.tag_bind('poligono%s'%i , '<ButtonPress-1>' , lambda event: self.click_poligono(event,'%s' % i)
for j in range(len(matriz_start[i])):
if True: #if for possible matrix condition
self.canvas.create_line(10+matriz_start[i][j]['x']*680/maximo,690-(matriz_start[i][j]['y']*680/maximo),10+matriz_end[i][j]['x']*680/maximo,690-(matriz_end[i][j]['y']*680/maximo), width = 2 ,tags ='poligono%s'%i)
所以这里的问题是,如何设置选择我用鼠标单击的行集,并在一个函数上处理它,因为行集是可变的,具体取决于文件的数字(Adobe Illustrator) ).. ..
我希望我能清楚自己的问题,并且我会对我的代码提出新的建议。
答案 0 :(得分:0)
我想这是因为lambda。
你有
lambda event: self.click_poligono(event,'%s' % i)
其中event
是局部变量但i
不是。
试试这个
lambda event, i=i: self.click_poligono(event,'%s' % i)