def focIn(event): print('Focus') canv.itemconfig(position,outline='white',width=3,fill='red') def focOut(event): print('No Focus') canv.itemconfig(position,outline='black',width=1,fill=color) rN=[] for i in range(20): i=canv.create_rectangle(10, nextY,280,20+nextY, width=1,fill=color,outline='black') rN.append(i) nextY=nextY+30 for position in rN: canv.tag_bind(position,'<Enter>',focIn) canv.tag_bind(position,'<Leave>',focOut)
Люди добрые подскажите как фокусировать каждый прямоугольник ?
Второй цикл явно бесполезен - выдает только фокус последнего прямоугольника из 20-ти, при наведении на любой из тех 20-ти.
Понять еще не могу, циклы эти выполняются в программе всего 1 раз, почему тогда работает bind - хоть и не так как мне хотелось-бы. Или bind встречаясь в любом месте программы включается как прерывание? Если так, то как изменять position в данном случае, что бы фокус был на той фигуре на которую наведена мышь ?
Пробовал пихать bind в первый цикл отпуская второй - тоже не помогло.
Пробовал вместо второго цикла делать функцию с постоянным вызовом самой себя .after но что не пошло там с областью видимости переменных - как я понял.