- How to install and run qt-designer for python
- 4 Answers 4
- Создаём окружение для PyQt5 в Linux MInt (Ubuntu)
- Пути установки
- Настройка окружения
- Создание приложения
- Упаковка в исполняемый файл для Linux
- Упаковка в исполняемый файл для Windows
- [Linux ] Use Qt Designer to develop Python GUI program in Ubuntu 18.04
- Installation of Qt Designer
- Share this:
How to install and run qt-designer for python
I’m new to ubuntu, I entered the following commands sudo apt-get install python-pyqt and sudo apt-get install qt-designer .
Both the commands executed successfuly but I’m not able to figure out how to launch the qt-designer program.
4 Answers 4
Considering the packages names did dramatically change, the procedure with Ubuntu 20.04 is now:
sudo apt-get install qttools5-dev-tools sudo apt-get install qttools5-dev
Then, Qt Designer is installed as designer , and is also in the start menu.
with sudo apt-get install python-qt4 qt4-designer should work.
You can find it if you search it with apt-cache search qt | grep designer :
libqt4-designer - Qt 4 designer module libqt4-designer-dbg - Qt 4 designer library debugging symbols qt4-designer - graphical designer for Qt 4 applications kdesignerplugin - Integration of KF5 widgets in Qt Designer/Creator kdesignerplugin-data - Integration of KF5 widgets in Qt Designer/Creator kgendesignerplugin - Integration of KF5 widgets in Qt Designer/Creator libopenrpt-dev - graphical SQL report writer, designer and rendering engine (development) libopenrpt1v5 - graphical SQL report writer, designer and rendering library libqscintilla2-designer - Qt4 Designer plugin for QScintilla 2 libqscintilla2-designer-dbg - Qt4 Designer plugin for QScintilla 2 (debug) libqt5designer5 - Qt 5 designer module libqt5designercomponents5 - Qt 5 Designer components module libqt5scintilla2-designer - Qt5 Designer plugin for QScintilla 2 libqt5scintilla2-designer-dbg - Qt5 Designer plugin for QScintilla 2 (debug) libqxt-designer0 - LibQxt extensions to Qt Designer openrpt - graphical SQL report writer, designer and rendering engine
And search more info about the package with apt-cache show qt4-designer .
Создаём окружение для 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), закрываем терминал. Идём раздавать нашу программу всем желающим.
[Linux ] Use Qt Designer to develop Python GUI program in Ubuntu 18.04
If you want to develop a Python GUI program, choose PyQt5 is a great choice. In the past, I recorded about how to configure the Qt Designer in PyCharm on Windows. ([PyQt5] Tutorial(1) Install PyQt5 and print «Hello World!»)
If you want to know more about PyQt5, you can refer to here: https://pypi.org/project/PyQt5/
The installation method in Linux system is actually simpler, the following is a simple record.
Installation of Qt Designer
Before we start, we need to install the following packages:
sudo apt-get install qt5-default sudo apt-get install qttools5-dev-tools sudo pip3 install pyqt5
After installing, use the following command to open Qt Designer:
Let’s place a QLabel component in the window, and use ctrl+s to save it, named it UI.ui .
Of course we are not use Python to execute it, we need to convert it from xml format to Python code:
pyuic5 can convert UI files to .py files so that we can read them normally.
from PyQt5 import QtWidgets from UI import Ui_MainWindow import sys class MainWindow(QtWidgets.QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.ui.label.setText('Hello World!') if __name__ == '__main__': app = QtWidgets.QApplication([]) window = MainWindow() window.show() sys.exit(app.exec_())