Qt designer python linux

qt designer python

Qt Designer helps you build a GUI (graphical user interface). You can load a GUI from Python. In this tutorial we’ll show you step by step.

It covers a very basic example of how to use Qt Designer with PyQt and Python. For more details see the link below.

Qt Designer Python

Prerequisites

To start with this tutorial you need these installed:

You will need Python 3 or above, because the others are out dated.

If you don’t have PyQt, install PyQt.

sudo apt-get install qttools5-dev-tools
sudo apt-get install qttools5-dev

On other platforms it’s included in the setup.

How to start Designer

Start designer by typing designer in the command line. Important: qt creator is another program.

cd /usr/lib/x86_64-linux-gnu/qt5/bin/
./designer

Basics

A popup shows up. You can choose what you want to design.

pyqt designer

Choose “Main Window” and click create.

You can then resize the form and drag and drop widgets. It’s pretty simple to design a graphical interface like this.

If you click on a widget (say a button), you can set its properties like name.

qt designer

Export Design to UI

You can export your design to a UI file. Click File > Save As > yourname.ui

Then you can convert the ui code to a python file.
Like this:

pyuic5 /home/linux/helloworld.ui -o helloworld.py

The Python file then contains the gui definition.
Create another file that loads the ui file:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication
import sys
import helloworld

class ExampleApp(QtWidgets.QMainWindow, helloworld.Ui_MainWindow):
def __init__(self, parent=None):
super(ExampleApp, self).__init__(parent)
self.setupUi(self)

def main():
app = QApplication(sys.argv)
form = ExampleApp()
form.show()
app.exec_()

if __name__ == ‘__main__’:
main()

Once you run it your GUI appears.

Источник

Создаём окружение для PyQt5 в Linux MInt (Ubuntu)

image imageimage
Давно уже до пятой версии обновился 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), закрываем терминал. Идём раздавать нашу программу всем желающим.

Источник

Читайте также:  Тег INPUT, атрибут value
Оцените статью