- Install pyqt
- How to install PyQt5 on Windows?
- How to install PyQt5 on Mac OS X?
- How to install PyQt5 on Linux?
- Install PyQt5 on Ubuntu Linux Install PyQt5 on Ubuntu and other Debian-based Linux distributions
- Install PyQt5 with pip
- Install PyQt5 via apt
- Создаём окружение для PyQt5 в Linux MInt (Ubuntu)
- Пути установки
- Настройка окружения
- Создание приложения
- Упаковка в исполняемый файл для Linux
- Упаковка в исполняемый файл для Windows
Install pyqt
PyQt is often not installed by default. The PyQt module can be used to create desktop applications with Python. In this article you’ll learn how to install the PyQt module.
Desktop applications made with PyQt are cross platform, they will work on Microsoft Windows, Apple Mac OS X and Linux computers (including Raspberry Pi).
How to install PyQt5 on Windows?
To install PyQt on Windows there are a few steps you need to take.
First use the installer from the qt-project website, from qt to install PyQt.
Next you want to install a Python version 3.3 or newer. Check the box to add all of the PyQt5 extras. It’s not necessary to compile everything from source, you can install all the required packages with the installer.
On Python >= 3.6, you can also try this command:
It should work without problems.
How to install PyQt5 on Mac OS X?
On Apple Mac OS X installation is a bit simpler. The first step to take is to install the Mac OS X binary. This installs the PyQt GUI library.
But to use it from Python, you also need Python module. This is where the tool brew comes in.
You can use brew to install pyqt (in the terminal):
How to install PyQt5 on Linux?
Python is often installed by default on Linux (in nearly all of the distributions including Ubuntu). But you want to make sure to use Python 3, because of all the features and ease of use. You can verify that you have the newest Python version with the command:
On Ubuntu Linux they sometimes include two versions of python, python3 and python . In that case use Python 3.
Once you have Python ready, the next step is to install PyQt.
This isn’t hard to do if you have some Linux experience. You can install PyQt your software package manager. Which package manager to use depends on which Linux distribution you are using.
On Ubuntu Linux / Debian Linux you can use the command:
sudo apt-get install python3-pyqt5
For CentOS 7 use the command:
yum install qt5-qtbase-devel
For RPM-based systems (Redhat-based)
PyQt GUI Programming Tutorial
Install PyQt5 on Ubuntu Linux
Install PyQt5 on Ubuntu and other Debian-based Linux distributions
Before you start the PyQt5 tutorial you will need to have a working installation of PyQt5 on your system. If you don’t have either set up yet, the following steps will guide you through how to do this on Linux.
This guide is also available for macOS and Windows.
Note that the following instructions are only for installation of the GPL licensed version of PyQt. If you need to use PyQt in a non-GPL project you will need to purchase an alternative license from Riverbank Computing to release your software.
Install PyQt5 with pip
The simplest way to install PyQt5 on Linux is to use Python’s pip packaging tool, just as for other packages. For Python3 installations this is usually called pip3 .
1:1 Python GUIs Coaching & Training
Comprehensive code review • Bugfixes & improvements • Maintainability advice and architecture improvements • Design and usability assessment • Suggestions and tips to expand your knowledge • Packaging and distribution help for Windows, Mac & Linux • Find out more.
Install PyQt5 via apt
Packages for PyQt5 are available in the repositories of most distributions, although they may sometimes be out of date. Check first to ensure you’re getting an up to date version, and if not use the pip method above. In Ubuntu you can install either from the command line or via «Software Center». The package you are looking for is named python3-pyqt5 .
You can also install these from the command line as follows —
sudo apt install python3-pyqt5
After install is finished, you should be able to run python (or python3 ) and import PyQt5 without errors.
Python 3.7.6 Type "help", "copyright", "credits" or "license" for more information. >>> import PyQt5 >>>
Создаём окружение для PyQt5 в Linux MInt (Ubuntu)
Давно уже до пятой версии обновился Qt и вместе с ним PyQt, но найти информацию по ним в русскоязычном сегменте — задача не из простых. Под катом подробный туториал для тех, кто только начинает знакомиться со связкой Qt + python3.
Цель: собрать и настроить окружение, пройти путь от установки PyQt5 и создания формы в Qt Designer до запуска переносимого бинарника под Windows (да, всё верно, разрабатываем под Mint, собираем для linux и windows).
Пути установки
- Все необходимые файлы и папки хранятся в директории dev в домашней директории пользователя, т.е. ~/dev/
- Мы будем использовать виртуальные окружения для питона, и хранить их будем в директории envs, т.е. ~/dev/envs/
- Наши проекты будут храниться в директории src, т.е. ~/dev/src/
Настройка окружения
cd ~ mkdir -p dev/envs dev/src cd dev/envs
sudo apt-get install python3-dev
wget https://bootstrap.pypa.io/get-pip.py sudo python3 get-pip.py rm get-pip.py sudo pip install virtualenv
virtualenv --prompt="[pyqt5] " pyqt5 source pyqt5/bin/activate pip install -U pip setuptools
Ставим Qt5. При выборе пути установки я оставил «по-умолчанию» ~/Qt. Если Вы выберите другой, то необходимо менять пути в командах ниже:
# Для x64-архитектуры # http://www.qt.io/download-open-source/#section-2 wget http://download.qt-project.org/official_releases/online_installers/qt-opensource-linux-x64-online.run chmod u+x qt-opensource-linux-x64-online.run ./qt-opensource-linux-x64-online.run rm qt-opensource-linux-x64-online.run # Для x86-архитектуры # http://www.qt.io/download-open-source/#section-2 # wget http://download.qt-project.org/official_releases/online_installers/qt-opensource-linux-x86-online.run # chmod u+x qt-opensource-linux-x86-online.run # ./qt-opensource-linux-x86-online.run # rm qt-opensource-linux-x86-online.run
# http://www.riverbankcomputing.com/software/sip/download wget http://sourceforge.net/projects/pyqt/files/sip/sip-4.16.5/sip-4.16.5.tar.gz tar xvzf sip-4.16.5.tar.gz cd sip-4.16.5/ python configure.py -d ~/dev/envs/pyqt5/lib/python3.4/site-packages/ make sudo make install sudo make clean cd .. rm -rf sip*
wget http://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.4/PyQt-gpl-5.4.tar.gz tar xvzf PyQt-gpl-5.4.tar.gz cd PyQt-gpl-5.4/ # У меня под рукой только x64-архитектура, поэтому моя команда выглядит именно так. # Если же у вас x86, то путь ~/Qt/5.4/gcc_64/bin/qmake будет выглядеть иначе. # Буду признателен, если в комментариях подскажут, как именно python configure.py --destdir ~/dev/envs/pyqt5/lib/python3.4/site-packages/ --qmake ~/Qt/5.4/gcc_64/bin/qmake make sudo make install sudo make clean cd .. rm -rf PyQt*
python -c "from PyQt5.QtCore import QT_VERSION_STR;from PyQt5.Qt import PYQT_VERSION_STR;from sip import SIP_VERSION_STR;print('Qt version: ',QT_VERSION_STR);print('SIP version: ',SIP_VERSION_STR);print('PyQt version: ',PYQT_VERSION_STR)"
Qt version: 5.4.0 SIP version: 4.16.5 PyQt version: 5.4
Для проверки, что всё действительно установилось в виртуальное окружение, откройте новое окно терминала и повторите команду проверки:
В ответ должна появиться ошибка ImportError. Новое окно терминала после этого можно закрыть.
Создание приложения
cd ../src/ mkdir pyqt_test cd pyqt_test/
Далее нам потребуется Qt Designer. Если Вы не меняли пусть установки Qt, то запустить его можно командой:
# И вновь эта команда будет работать только для x64-архитектуры. # Для x86 вместо gcc_64 вероятнее всего будет иная директория. ~/Qt/5.4/gcc_64/bin/designer
Вот так выглядит запущенный Qt Designer на моей системе:
В данном руководстве я не буду подробно останавливаться на описании интерфейса дизайнера, мы пройдём простейший путь до минимальной готовой формы. Если Вам необходима более подробная информация — Google It!
В диалоговом окне выбираем «Widget» (последний пункт в списке «templates/forms») и нажимаем кнопку «Создать». Откроется форма редактирования виджета:
Перетащите на форму кнопку из меню слева и сохраните полученную форму с именем test.ui в директорию ~/dev/src/pyqt_test/:
Tips&Tricks: Нажав [Crtl + R] Вы можете запустить свою форму и «потрогать» её в режиме реального времени.
Конвертируем файл интерфейса из XML формы в понятную python форму:
Я не хочу редактировать что-либо в файле, созданном конвертером PyQt, поэтому наши слоты мы опишем в отдельном файле. Создайте файл test_slots.py и откройте его в любимом Вами редакторе. Наполнение файла должно выглядеть примерно так:
""" Пользовательские слоты для виджетов. """ # Импортируем модуль времени from datetime import datetime # Импортируем класс интерфейса из созданного конвертером модуля from test_ui import Ui_Form # Создаём собственный класс, наследуясь от автоматически сгенерированного class MainWindowSlots(Ui_Form): # Определяем пользовательский слот def set_time(self): # Получаем текущую метку времени в формате 'Ч:М:С' str_time = datetime.now().strftime('%H:%M:%S') # Присваиваем надписи на кнопке метку времени self.pushButton.setText(str_time) return None
""" Основной скрипт программы. Запускает конфигуратор окна, подключает слоты и отображает окно. """ # Импортируем системый модуль для корректного закрытия программы import sys # Импортируем минимальный набор виджетов from PyQt5.QtWidgets import QApplication, QWidget # Импортируем созданный нами класс со слотами from test_slots import MainWindowSlots # Создаём ещё один класс, наследуясь от класса со слотами class MainWindow(MainWindowSlots): # При инициализации класса нам необходимо выпонить некоторые операции def __init__(self, form): # Сконфигурировать интерфейс методом из базового класса Ui_Form self.setupUi(form) # Подключить созданные нами слоты к виджетам self.connect_slots() # Подключаем слоты к виджетам def connect_slots(self): self.pushButton.clicked.connect(self.set_time) return None if __name__ == '__main__': # Создаём экземпляр приложения app = QApplication(sys.argv) # Создаём базовое окно, в котором будет отображаться наш UI window = QWidget() # Создаём экземпляр нашего UI ui = MainWindow(window) # Отображаем окно window.show() # Обрабатываем нажатие на кнопку окна "Закрыть" sys.exit(app.exec_())
мы должны увидеть форму с кнопкой посередине, нажатие на которую меняет название кнопки на системную дату.
Упаковка в исполняемый файл для Linux
Упаковщик потребует некоторой магии при установке.
Скачиваем пакет, не устанавливая его и распаковываем:
cd ../../envs/pyqt/ pip install -d . cx_freeze tar xvfz cx_Freeze-4.3.4.tar.gz
Правим строку №84, чтобы она выглядела, как на картинке:
Tips&Tricks: А вы знали, что если запустить SublimeText из виртуального окружения, то интерпретатором по-умолчанию будет из виртуального окружения?
Сохраняем изменения, закрываем редактор, устанавливаем пакет, возвращаемся в папку с исходниками, запускаем упаковку:
cd cx_Freeze-4.3.4 python setup.py install rm ../cx_Freeze-4.3.4.tar.gz cd ../../../src/pyqt_test cxfreeze main.py --target-dir=nix_build
После этого в директории с исходниками появится директория dist, в которой среди множества файлов можно заметить файл без расширения main — это и есть наш бинарник, готовый для запуска и переноски. Откровенно говоря, немного расстраивает размер дистрибьютива: на моей машине это — 70,1 Мб, но не стоит забывать, что туда упакованы: python, PyQt, Qt и некоторые общесистемные библиотеки. Сборочный скрипт cxfreeze достаточно гибко конфигурируется, но подбор оптимальных параметров я оставлю на совести читателя. Скажу только, что счастье кроется в сжатии, оптимизации и ручном ограничении зависимостей.
Упаковка в исполняемый файл для Windows
К сожалению, чуда не будет. Мне не известен способ собрать exe напрямую из-под Linux-системы. Поэтому, придётся потанцевать с wine.
Закрываем открытый в самом начале терминал:
cd dev sudo add-apt-repository ppa:ubuntu-wine/ppa sudo apt-get update sudo apt-get install wine1.7
# https://www.python.org/downloads/windows/ wget https://www.python.org/ftp/python/3.4.2/python-3.4.2.msi wine msiexec /i python-3.4.2.msi rm python-3.4.2.msi # http://www.riverbankcomputing.com/software/pyqt/download5 wget http://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.4/PyQt5-5.4-gpl-Py3.4-Qt5.4.0-x32.exe wine PyQt5-5.4-gpl-Py3.4-Qt5.4.0-x32.exe rm PyQt5-5.4-gpl-Py3.4-Qt5.4.0-x32.exe # http://sourceforge.net/projects/cx-freeze/files/ wget http://downloads.sourceforge.net/project/cx-freeze/4.3.3/cx_Freeze-4.3.3.win32-py3.4.msi wine msiexec /i cx_Freeze-4.3.3.win32-py3.4.msi rm cx_Freeze-4.3.3.win32-py3.4.msi
http://www.lfd.uci.edu/~gohlke/pythonlibs/#cx_freeze
wine cx_Freeze-4.3.4.win32-py3.4.exe rm cx_Freeze-4.3.4.win32-py3.4.exe
После этого остаётся проверить работоспособность. Переходим в каталог с исходником, открываем терминал wine, выполняем уже знакомую команду сборки:
cd src/pyqt_test wine cmd cxfreeze main.py --target-dir=win_build
Оказалось, что у меня в распоряжении нет windows-машины, поэтому смог протестировать результат только под wine. Выходим из терминала wine (команда exit), закрываем терминал. Идём раздавать нашу программу всем желающим.