选择一行并在鼠标单击时处理其标记(python tkinter)

时间:2015-08-20 00:23:35

标签: python-2.7 tkinter

您好我正在开发用于处理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) ).. ..

我希望我能清楚自己的问题,并且我会对我的代码提出新的建议。

1 个答案:

答案 0 :(得分:0)

我想这是因为lambda。

你有

lambda event: self.click_poligono(event,'%s' % i)

其中event是局部变量但i不是。

试试这个

lambda event, i=i: self.click_poligono(event,'%s' % i)