Найти - Пользователи
Полная версия: Связь элементов Canvas со списком
Начало » Python для новичков » Связь элементов Canvas со списком
1
Nahtrezer
Суть такова…
Disclamer: кода не будет, потому как еще не могу придумать концепт, за чем, собственно, и обращаюсь.

Идея такая: на канву добавляются (по запросу пользователя, кликом мыши) элементы (прямоугольники, допустим) которые символизируют собой также объекты в списке. После того, как пользователь завершил создание “графической части” с элементами (объекты разных классов) в списке производятся некие действия. Проблема в следующем - пользователь может “передумать” и удалить какой-то объект с канвы.
Вопрос: каким образом можно “увязать” список объектов, с которыми будут выполняться действия и непосредственно графическое отображение этого списка? Возможно у кого-то есть рабочие примеры таких приложений, или кто-то знает приложение со схожим функционалом с открытыми исходниками, где можно было бы подсмотреть?
Заранее благодарен всем отписавшимся.

UPD:
После того, как написал сообщение подумал - возможно имеет смысл замкнуть работу пользователя непосредственно на “списке”, а канву просто перерисовывать каждый раз, когда в списке происходит какое-то изменение?
Но в таком случае возникает проблема - у пользователя должна быть возможность добавлять объекты “между” уже существующими.
Всё еще благодарен за рекомендации/примеры.

UPD:
Ну и, конечно, в пылу я забыл написать, что в качестве GUI библиотеки решил использовать Tkinter.
4kpt_III
Зачем канвас. Можно два связанных списка. Первый - возможное количество вариантов. Второй - выбранные варианты. Если же нужно графическое решение (картинка там с текстом или что-то похожее), тогда необходимо в канвасе реализовывать такое понятие, как курсор вставки. Чтобы можно было его перемещать вверх и вниз. Последовательность объектов на канвасе можно узнавать либо по его позиции (координатам) либо предварительной фиксацией методом присвоения тегов.

P.S. Тема должна быть не здесь, а в разделе GUI
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB