Как интерактивно редактировать ваш графический интерфейс используя reload() — wxPython #23

автор

Я наткнулся на интересный вопрос на StackOverflow несколько лет назад. Его автор спрашивал, как он может динамично писать программу, используя wxPython. Другими словами, он хотел получить возможность использовать встроенный в wxPython функционал reload(). Если мы хотим попробовать сделать это, нам нужно написать небольшой фронт-енд интерфейс, в который мы и импортируем код, который мы хотим редактировать интерактивно.

Создание перезагружающегося приложения

Создание перезагружающегося приложения – простой и прямолинейный процесс. Всё, что нам нужно это приложение, которое запрограммировано на динамическую перезагрузку. Python сделает всё остальное. Давайте взглянем на код перезагружающегося приложения, а затем взглянем на простое приложение, которое мы будем редактировать и перезагружать.

Здесь мы импортируем модуль, который мы будем редактировать в то время, когда скрипт уже запущен. В данном случае, модуль называется testApp (а сам файл назван testApp.py). Затем мы добавляем пару кнопок: одну для отображения фрейма testApp, другую для перезагрузки кода testApp и повторного его отображения, но уже со внесёнными изменениями. Соглашусь, нам скорее всего стоило бы добавить хэндлинг исключений на случай, если в коде будет сделана опечатка, но я решил не делать этого, чтобы вы поупражнялись самостоятельно.

Теперь же нам нужно создать файл testApp.py.

Создание динамического приложения

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

Теперь, всё что вам нужно – это отредактировать второй файл и перезагрузить его с помощью первого файла, чтобы увидеть изменения. Я советую добавить кнопку в класс TestPanel, которая бы сохраняла предыдущую версию, а затем уже нажимать на кнопку «Перезагрузка» в другом скрипте, чтобы увидеть изменения.

Итоги

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

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

Вам может быть интересно

Scroll Up