Погружаясь глубже в мир 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.

Призыв к действию. Если вам понравился этот совет, подпишитесь на мою рассылку.