Используйте последнюю версию PyQT6 или PySide6 для создания кроссплатформенного настольного приложения на чипе Apple Silicon.

Я использую Python в своем любимом M1 Macbook Air. Думая, могу ли я использовать Python для создания настольного приложения с графическим интерфейсом на маломощной машине? После некоторых ошибок и проб я нашел выход, и он тоже должен работать у вас.

Установить Python

Убедитесь, что на ваших машинах M1 установлен собственный M1 с Python 3.9. Если у вас его еще не было, запустите эту строчную команду, чтобы подготовить вашу среду.

brew install [email protected]

Да, только команда одна строка.

PyQt6 или PySide6

PyQt6 и PySide6 на 99,99% одинаковы. Существование PySide6 связано с лицензированием. PyQt используется под GPL или коммерческой лицензией. это означает, что вам нужно открыть исходный код или приобрести коммерческую лицензию для вашего приложения, которая будет взимать плату с пользователей. Хотя PySide доступен по лицензии LGPL, вам не нужно покупать лицензию для ваших приложений.

В следующем примере кода PyQt6 и PySide6 можно заменить. Я буду использовать PySide6 во всех примерах кода.

Установите PyQt6 или PySide6.

Начиная с версии 6.2, PyQt полностью поддерживает чип Apple Silicon. Просто запустите эту команду, чтобы установить PyQt6.

pip install PyQt6

or

pip install PySide6

Сделанный. Для получения дополнительной информации об установке PyQt6 перейдите по этой ссылке.

Кстати, если вы хотите узнать, какую версию PySide вы используете, используйте этот код:

import PySide6.QtCore
# Prints PySide6 version
print(PySide6.__version__)
# Prints the Qt version used to compile PySide6
print(PySide6.QtCore.__version__)

Привет, мир

Создайте новый файл helloworld.py и запишите следующий код Python.

from PySide6.QtWidgets import QApplication,QLabel
app   = QApplication([])
label = QLabel('hello world')
label.show()
app.exec()

Теперь запустите его с помощью python helloworld.py в своем терминале. Вы должны увидеть новое всплывающее приложение, подобное этому:

Окно, макет и кнопки

Давайте добавим еще несколько элементов в настольное приложение hello world.

В приведенном выше коде я добавил Window, который содержит объект вертикального макета, а объект макета содержит все элементы виджета, такие как Label и Button.

Первая кнопка (btn1) привязана к обработчику событий — on_btn1_clicked() , так что при каждом нажатии кнопки будет запускаться функция обработки событий.

Запустите его, и вы увидите.

Скомпилируйте приложение PyQt

Нереально просить пользователей вашего приложения установить все необходимые пакеты перед установкой приложения. Итак, вам нужно будет скомпилировать и упаковать весь код в дистрибутивную форму. Люди обычно называют этот процесс Freeze.

Существует множество решений для компиляции приложений PyQt. Я обнаружил, что cx_Freeze лучше всего подходит для чипа Apple Silicon.

Чтобы установить cx_Freeze:

pip install --upgrade cx_Freeze

Чтобы скомпилировать приложение PyQt, в терминале запустите:

cxfreeze -c helloworld.py --target-dir dist

Теперь перейдите в папку dist, вы можете запустить приложение с

./helloworld

Все сделано.

Справочные ссылки

  1. Qt на Apple Silicon: https://www.qt.io/blog/qt-on-apple-silicon
  2. Учебник PyQt5: https://build-system.fman.io/pyqt5-tutorial
  3. PyQt6 6.2.2: https://pypi.org/project/PyQt6/
  4. cx_Freeze: https://cx-freeze.readthedocs.io/en/latest/index.html
  5. PyQt5 против PySide2: https://www.pythonguis.com/faq/pyqt5-vs-pyside2/
  6. Официальный документ PySide6: https://doc.qt.io/qtforpython-6/index.html#