Уведомления

Группа в Telegram: @pythonsu

#1 Март 21, 2011 23:24:44

solyony
От:
Зарегистрирован: 2010-12-01
Сообщения: 58
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter нужна помощь.

Нужно создать некоторое ручное подобие графа.
То есть на холсте вывести некоторое количество кругов и прямые их соединяющие.

Как сделать что бы при зажатии мышки над кругом и ее перемещении перемещалась точка и все в нее входящие ребра.
Как это сделать?…

Заранее спасибо…



Офлайн

#2 Март 21, 2011 23:41:43

cookie-god
От:
Зарегистрирован: 2011-03-13
Сообщения: 41
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter нужна помощь.

Наверное, стоит обработать нажатие левой кнопки мыши, если она над вершиной, то запомнить вершину, а когда мышь двигается, если мы запомнили какую-нибудь вершину, то двигать вершину и все ее ребра. При отжатии кнопки же про вершину можно забыть. Так?



Офлайн

#3 Март 22, 2011 17:01:34

solyony
От:
Зарегистрирован: 2010-12-01
Сообщения: 58
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter нужна помощь.

Да, но меня интересует не теория, а как это на практике прописать…
Хоть что использовать…



Офлайн

#4 Март 22, 2011 22:21:34

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

Tkinter нужна помощь.

Ну вообще если банально рисовать на Canvas то:
Вариант 1) Круг это объект, который знает свои координаты, размеры и имеет метод check(x,y), который определяет находится ли точка внутри обьекта. На клик выполняем проверку для всех объектов. Кроме того обьект может отвечать за перемещение, прорисовку, хранить ссылки на присоединенные линии и всё что вздумается.
Вариант 2) Использовать методы Canvas find_closest и find_overlapping и выполнять драг и всё остальное для найдёных элементов.

Возможно есть ещё варианты попроще.



Отредактировано (Март 22, 2011 22:26:20)

Офлайн

#5 Март 22, 2011 22:33:50

solyony
От:
Зарегистрирован: 2010-12-01
Сообщения: 58
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter нужна помощь.

Какие же еще попроще?…



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version