Динамическое добавление и удаление виджетов — wxPython #1

Динамическое добавление и удаление виджетов - wxPython #1

Создание и удаление виджетов являются довольно распространёнными заданиями, но большинство разработчиков не в восторге от него. Однако, wxPython способен значительно упростить данный процесс. Я сам неоднократно разрабатывал виджеты, основываясь на том, какие функции необходимы конечному пользователю программы, так что я могу ознакомить вас с массой вариантов. Например, администратор может получить дополнительные возможности, доступа к которым простые пользователи иметь не будут. В этом случае возникает ситуация, когда вам нужно быстро убрать или добавить административную панель с виджетами.

Я, к примеру, решил эту проблему очень просто. Это приложение даёт пользователям возможность добавлять и убирать кнопки, и ничего больше. Скрипт, который вы найдёте ниже, позволит вам создать окно, похожее на то, что вы видите в начале статьи. Когда вы нажмёте кнопку «Add» несколько раз, вы должны будете увидеть что-то вроде этого:

Динамическое добавление и удаление виджетов - wxPython #1

Как вы могли заметить, вы добавили несколько кнопок. Теперь давайте уделим мгновение и прочтём код. Я объясню этот код сразу же после того, как вы его прочтёте.

Я думаю, что это довольно простой код, так что я сфокусирую ваше внимание на важных битах. Первая тема, о которой я хотел бы рассказать, это метод под названием Frame’s Fit(). Я обычно избегаю использования фита, но у меня были проблемы с изменением размера окна в момент добавления новых кнопок, и фит справился с этим. Стоит отметить, что фит постоянно пытается подогнать виджеты под окно, и, иногда, мне не нравится как это выглядит.

Мы собрали ТОП Книг для Python программиста которые помогут быстро изучить язык программирования Python. Список книг: Книги по Python

Как бы то ни было, следующий бит демонстрирует методы onAddWidget и onRemoveWidget. Обычно вам требуется два слоя: первый отвечает за размеры и обновления контейнера, второй за добавление и удаление виджетов. Весьма странно, но похоже, что фит делает это автоматически, так что вы можете смело удалять всё, что находится выше строки Layout(). Я убирал фиты, чтобы проверить, справится ли Layout с задачей подгона под контейнер, но как только я удалил фиты, размер контейнера перестал подстраиваться под количество кнопок, так что без фитов в данном случае не обойтись. Однако, если вы добавляете виджеты, которые точно поместятся в контейнере, вам будет достаточно и одного Layout.

В конце я хотел бы добавить небольшой комментарий. Вы также можете использовать Layout() в конце обновления Freeze / Thaw.

Подведем итоги

Благодаря этой статье вы должны научиться добавлять и удалять виджеты довольно быстро. Когда вы полностью освоите данное приложение, вы будете поражены его простотой и эффективностью. Это фрагмент информации, который я считаю очень полезным, так как сам пользуюсь данной техникой на протяжении многих лет.

Продолжение

Следующий урок №2: Как сделать скриншот вашего приложения

Подпишись на канал!

Новые видеоуроки, книги и полезные статьи для python программистов!