Далее нажмем правой кнопкой мыши на созданном питон файле и выберем команду
run
.
В результате будет запущено приложение и откроется окно с меткой.
Теперь у нас есть приложение с графическим интерфейсом пользователя.
И оно работает на вашем компьютере.
Вопрос – как его передать другим людям, чтобы они тоже могли его запустить?
Вы можете попросить пользователей вашего приложения установить Python и PyQt, а затем предоставить им свой исходный код.
Но это очень неудобно.
Вместо этого нам нужен исполняемый файл, который другие люди могут запускать в своих системах, ничего не устанавливая.
В Python процесс превращения исходного кода в автономный исполняемый файл называется замораживанием.
Хотя существует множество библиотек, которые решают эту проблему, например PyInstaller, py2exe и так далее, здесь мы будем использовать библиотеку под названием fbs, которая позволяет создавать автономные исполняемые файлы для приложений PyQt.
Поэтому для начала установим библиотеку fbs.
Далее мы в терминале запускаем команду fbs startproject.
В результате выполнения которой будет создана папка src/main/python/с файлом main.py.
Команда startproject создает необходимую структуру папок для приложения fbs.
Если мы наберем в терминале команду fbs run, откроется просто пустое окно.
Теперь, как нам вставить в это окно нашу метку.
Здесь вы можете заметить, что создание приложения с помощью fbs представляет новую концепцию – ApplicationContext.
При создании приложений PyQt5 обычно используется ряд компонентов или ресурсов, которые используются во всем приложении.
И ApplicationContext предоставляет центральное место для инициализации и хранения этих компонентов, а также предоставляет доступ к некоторым основным функциям fbs.
Объект ApplicationContext также создает и содержит ссылку на глобальный объект QApplication, доступный в ApplicationContext.app, так как каждое приложение Qt должно иметь один и только один объект QApplication для хранения цикла событий и основных настроек.
Теперь, чтобы вставить нашу метку, помимо QMainWindow импортируем метку.
Создадим метку и методом setAlignment установим ее посередине.
Методом setCentralWidget добавим метку в окно QMainWindow.
В результате после вызова команды fbs run мы увидим окно с меткой.
Более подробно про окно QMainWindow можно посмотреть в
QT
документации.
Теперь, приложениям обычно требуются дополнительные файлы данных помимо исходного кода – например, изображения.
И вот здесь может быть полезен ApplicationContext.
Вы можете поместить ресурсы приложения в папку resources, и чтобы упростить загрузку ресурсов из папки resources, fbs предоставляет метод ApplicationContext.get_resource.
Этот метод принимает имя файла, который можно найти в папке resources, и возвращает абсолютный путь к этому файлу.
И вы можете использовать этот возвращенный абсолютный путь, чтобы открыть файл.
Папка resources должна содержать папку base плюс любую комбинацию других папок.
Базовая папка содержит файлы, общие для всех операционных систем, в то время как папки для конкретных платформ могут использоваться для файлов, специфичных для данной ОС.
Теперь, далее мы можем использовать fbs, чтобы превратить файл питона в отдельный исполняемый файл.
Для этого в терминале наберем команду fbs freeze.
Эта команда помещает исполняемый двоичный файл в целевую папку текущего каталога.
Далее мы можем создать установщик приложения.
Но для начала мы должны установить NSIS – систему с открытым исходным кодом для создания установщиков Windows.
Также нужно добавить каталог NSIS в переменную среды
Windows
PATH.
После этого нужно перезапустить среду разработки PyCharm, чтобы она увидела эти изменения.
Далее создадим установщик с помощью команды fbs installer.
Эта команда помещает исполняемый двоичный файл в целевую папку текущего каталога.
Теперь вы можете отправлять его для установки приложения.
Виджеты и компоновки PyQt
Система компоновки Qt предоставляет простой и мощный способ организации дочерних виджетов внутри родительского виджета.
Qt предоставляет набор классов управления компоновкой.
Эти компоновки автоматически позиционируют и изменяют размер виджетов.
И все виджеты Qt могут использовать компоновки для управления своими дочерними элементами с помощью функции setLayout.
Здесь мы с помощью компоновки QHBoxLayout располагаем метки горизонтально в окне QWidget.
Компоновка QVBoxLayout размещает метки вертикально.
Компоновка QGridLayout располагает элементы в сетке.
При этом для каждого элемента можно указать строку, столбец, в которых должен находиться элемент.
Также можно указать затем сколько строк и столбцов должен заполнять элемент.
Компоновка QFormLayout добавляет два виджета в строку, обычно QLabel и QLineEdit для создания форм.
В качестве резюме – виджеты могут иметь в качестве родительских только другие виджеты, но не компоновки.
Но вы можете вкладывать компоновки в родительскую компоновку с помощью метода addLayout, тогда внутренний макет становится дочерним по отношению к макету, в который он вставлен.
Теперь, модуль Qt Widgets предоставляет набор элементов пользовательского интерфейса для создания пользовательских интерфейсов приложения.
И все, что вы видите в приложении PyQt, представляет собой виджеты: кнопки, метки, окна, диалоговые окна, индикаторы выполнения и т. д.
С меткой мы уже познакомились.
При создании метки, передавая в конструктор в качестве параметра объект окна, мы сообщаем, что метка является частью окна.