Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 28, 2016 08:35:34

ayb
Зарегистрирован: 2014-04-01
Сообщения: 297
Репутация: +  24  -
Профиль   Отправить e-mail  

bind на много фигур

FishHook, там насколько я понял немного другой механизм, в колбэк пропихивается эвент, от него нужно плясать(т.е. находить на холсте ближайший элемент к этому эвенту и с ним работать )

Офлайн

#2 Апрель 28, 2016 08:43:22

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

bind на много фигур

ayb
Да что бы там ни было, писать ГУИ программы следует в ООП-стиле. Это проще, наглядней, читаемей и расширяемей.



Офлайн

#3 Апрель 28, 2016 12:27:52

vito-Z80
Зарегистрирован: 2015-09-10
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

bind на много фигур

FishHook
aybДа что бы там ни было, писать ГУИ программы следует в ООП-стиле. Это проще, наглядней, читаемей и расширяемей.
я больше путаться начинаю когда пытаюсь в ООП (((

ayb
спасибо огромное, то что нужно… но не совсем.
в принцип работы пока не въехал.
Добавляем в последний цикл:
canv.tag_bind(rectNum,'<Leave>',focOut)
+ функция focOut
def focOut(event):
    item = canv.find_closest(event.x, event.y)
    canv.itemconfig(item,outline='black',fill='#289d0a')

Ведя мышь по оси X вдоль этих фигур все отлично пока не прибавишь скорости движения мыши, если пронестись быстро мышью по фигурам то некоторые focOut как бы не успевают срабатывать, почему так ?


Курсор находясь в “фигура_1” ждет <Leave>, но при мгновенном перемещении курсора в “фигура_2” опять происходит <Enter> и плавный выход курсора с “фигура_2” выполняет <Leave> только для “фигура_2”, а “фигура_1” так и остается с фокусом до тех пор пока курсор не будет наведен на “фигура_1” и плавно убран с него же на холст, а не на другую фигуру, тогда выполнится <Leave> текущей фигуры.


..решил просто делать <Leave> для всех фигур на холсте:
функцию focOut убираем и меняем код в последнем цикле на:
canv.tag_bind(ALL,'<Leave>',lambda event:canv.itemconfig(ALL,outline='black',width=1,fill='#289d0a'))
работает, не знаю верно это или нет, но для моей задачи вроде все подходит.
Всем спасибо за советы и подсказки)

Отредактировано vito-Z80 (Апрель 28, 2016 15:58:37)

Офлайн

#4 Май 11, 2016 09:41:03

Griffon
От: Ukrain, Zaporozhie
Зарегистрирован: 2009-03-04
Сообщения: 324
Репутация: +  11  -
Профиль   Отправить e-mail  

bind на много фигур

vito-Z80
Возможно вам поможет update_idletasks.
Попробуйте.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version