Погружаясь глубже в мир Python, мне нужна была возможность создавать пользовательские интерфейсы на лету. Некоторые для демонстраций и других POC. Powerpoint быстро устаревает.
Начались поиски, охватившие весь интернет. В конце концов я остановился на PyQt5 после нескольких часов безрезультатных попыток альтернатив. После установки с помощью pip я был готов, или я так думал. Перед воротами я столкнулся с двумя проблемами.
- Во-первых, как мне создать пользовательский интерфейс, как в мире Visual Studio?
- Во-вторых, как подключить события и отладить код?
PyQt5 дал возможность запускать библиотеки для пользовательского интерфейса, но мне нужен был дизайнер, чтобы создать внешний вид. Через несколько часов я понял это. Я использовал дизайнер PyQt5, поставляемый с anaconda, и версию сообщества Pycharm. С помощью этих двух решений я мог мгновенно создавать кроссплатформенные виджеты.
Шаг первый, создайте пользовательский интерфейс и сохраните его как файл .ui (XML).
Далее, вместо того, чтобы кодировать стандартные классы, создайте их автоматически. Удобная небольшая утилита командной строки pyuic5 делает это безболезненно.
$ pyuic5 untitled.UI > untitled.py
Класс Dialog готов к работе. Просто добавьте события и вызовите Dialog.show(). Однако с этим подходом есть одна проблема. Каждый раз, когда форма изменяется и класс генерируется автоматически, весь добавленный пользовательский код исчезает. Это вернуло меня к концепции разделяемых классов в мире .NET. Короче говоря, частичный класс дает возможность разделить классы на несколько файлов. Таким образом, когда файл создается автоматически, другие связанные с ним файлы остаются нетронутыми.
Понимая, что этого не существует в Python, я решил это с помощью наследования. Я создал два дополнительных файла. Один с именем Controller.py. Этот файл содержит все методы подключения для компонентов экрана и действий.
Второй, test.py, является основным файлом приложения, загружающим контроллер.
Контроллер наследует автоматически сгенерированный файл.
И вот он, простой способ создать пользовательский интерфейс и подключить его с помощью Python.
Призыв к действию. Если вам понравился этот совет, подпишитесь на мою рассылку.