Кросплатформени приложения с Python, PyQT и QT Desginer 5

Съдържание
Python е език за програмиране към който характерно за многопарадигмата като позволява програмиране с обектно-ориентирана и функционална парадигма, има стандартизирана библиотека.
Има много инструменти и библиотеки на Python за разработване на софтуер и уеб приложения, в случай на екранен дизайн можем да използваме различни библиотеки като wxPython, PyQt, PySide или PyGTK за да нарисувате нашия интерфейс и след това програма, има и уеб рамки като Django, в този урок ще видим как да създаваме крос-платформени настолни приложения, използвайки PyQT 5.

PyQt5 е Библиотека с инструменти на Python за него QT5 рамка. Предлага се за Python 3.x.
PyQt5 е реализиран като набор от модули на Python. Тя ни позволява да свържем проектите, които правим с QT Designer и след това да можем да ги преведем с Py Qt, така че да са изпълними под Python във всички операционни системи като Linux Windows и Mac OS.
За да разработваме приложения, трябва да инсталираме необходимите програми и зависимости.Този урок ще използва версия на Linux Mint като операционна система, но може да се адаптира към всяка операционна система.
В други уроци използваме Qt за програмиране в C ++, мултиплатформено програмиране в C ++ и Qt под GNU / Linux среда и QT програмиране и SQLite бази данни.
Нека първо инсталираме QT Designer 5, от терминален прозорец го изтегляме и инсталираме
 $ wget http://download.qt-project.org/official_releases/qt/5.3/5.3.0/qt-Abrirsource-linux-x64-5.3.0.run $ chmod + x qt-Abrirsource-linux-x64-5.3 .0.run $ sudo ./qt-Abrirsource-linux-x64-5.3.0.run
След това трябва да инсталираме библиотеките за разработка на Python:
 sudo apt-get install pyqt5-dev-tools
След това трябва да инсталираме разширение на Python, наречено SIP, което е генератор на код, който е специално проектиран за създаване на код на Python. Това ще позволи на дизайнерския файл на Qt Designer да бъде прочетен и преведен в кода на Python. Генерираният код може да бъде компилиран за Python v2 и v3.
Изтегляме SIP от официалния уебсайт, след това отиваме в папката, където сме го изтеглили, разархивираме файла sip-4.17.tar.gz, влизаме в папката и конфигурираме SIP и инсталираме със следния код от прозореца на терминала.
 python configure.py направете make install
Зададохме QT5 като версия по подразбиране:
 sudo apt-get install qt5-default
Накрая изтегляме и инсталираме PyQt, които са библиотеките, които ще ни трябват за свързване на Python и QT Designer
Изтеглете PyQt от официалния му уебсайт, след това отиваме в папката, където сме го изтеглили, разархивирайте PyQt файла и влезте в папката и я конфигурирайте със следния код от прозореца на терминала.
 python configure.py
Ще създадем просто приложение от Qt дизайнер, ще направим дизайна, като вземем форма, ще се интересуваме само от файла с разширението потребителски интерфейс, който ще бъде интерфейсът за дизайн. Нашият проект се казва Dialoga.

След това ще изберем типа прозорец, който нашето приложение ще използва, в този случай ще използваме диалогов прозорец с два бутона като шаблон.

След това ще имаме екран с нашия прозорец за проектиране, добавяме TextEdit и запазваме файла

След това отиваме в папката с проекти, съответните c ++ файлове също ще бъдат генерирани, но ще използваме само ui файла.
След това от терминала ще трябва да преведем файла dialoga.ui в python, от прозореца на терминала използваме следната команда:
 pyuic5 -o dialoga.py dialoga.ui

Това генерира файла dialog.py, който е дизайнът, който имахме в c ++, сега наличен в Python, кодът е следният
 # - * - кодиране: utf -8 - * - # Реализация на формуляр, генериран от четене на потребителски интерфейс файл 'dialoga.ui' # # Създаден: Mon Oct 26 21:31:56 2015 # от: PyQt5 UI код генератор 5.2.1 от PyQt5 импортиране на QtCore, QtGui, QtWidgets клас Ui_DialogA (обект): def setupUi (себе си, DialogA): DialogA.setObjectName ("DialogA") DialogA.resize (400, 300) self.buttonBox = QtWidgets.QDialogButtonBox (DialogA) DialogA) самостоятелно. SetGeometry (QtCore.QRect (30, 240, 341, 32)) . ("buttonBox") self.textEdit = QtWidgets.QTextEdit (DialogA) self.textEdit.setGeometry (QtCore.QRect (20, 20, 361, 201)) self.textEdit.setObjectName ("textEdit") self.retranslateUi (DialogAi (DialogA) ) self.buttonBox.accepted.connect (DialogA.accept) self.buttonBox.rejected.connect (DialogA.reject) QtCore.QMetaObject.connectSlotsByName (DialogA) def retranslateUi (self, DialogA): _CranslateQt plication.translate DialogA.setWindowTitle (_translate ("DialogA", "Диалог"))
Това е всичко, което проектираме в Qt Designer, сега трябва да го свържем с код, който го използва, за това ще създадем файл startup.py и ще напишем следния код:
 импортиране на sys от PyQt5.QtWidgets импортиране на QApplication, QDialog от диалога import * app = QApplication (sys.argv) window = QDialog () ui = Ui_DialogA () ui.setupUi (window) window.show () sys.exit (app.exec_ ())
Виждаме, че импортираме библиотеките за графичен дисплей и импортираме диалоговия прозорец на файла с дизайна.
След това посочваме, че прозорецът ще бъде диалогов, прозорецът на потребителския интерфейс ще има дизайна, дефиниран в класа Ui_DialogA (), дефиниран във файла за проектиране и накрая този дизайн се присвоява на прозореца чрез функцията setupUi.
Запазваме и изпълняваме от командния прозорец, както следва:
 python3 home.py

Ще създадем прост, но функционален текстов редактор по -долу. Ще създадем нов проект, в който се интересуваме от създаването на графични интерфейси. Ще наречем проекта MyEditor.

След това избираме MainWindow като шаблон. В дизайна можем да имаме меню и текстово съобщение. Тук ще бъде важно да се даде име на всеки обект, така че да може да бъде идентифициран по -късно и да бъде препратен от кода на Python. След това го запазваме и преобразуваме ui файла в python.
Правим преобразуването от прозореца на терминала със следната команда:
 pyuic5 -o mieditor.py mieditor.ui
Кодът за дизайн в python ще бъде следният:
 # - * - кодиране: utf -8 - * - # Реализация на формуляр, генериран от четене на потребителски интерфейс файл '/testqt/mieditor.ui' # # Създаден: Mon Oct 26 10:32:56 2015 # от: PyQt5 UI генератор на код 5.2. 1 # # ВНИМАНИЕ! Всички промени, направени в този файл, ще бъдат загубени! от PyQt5 импортирайте QtCore, QMainWindow, QApplication, QtGui, QtWidgets клас Ui_MainWindow (обект): def setupUi (self, MainWindow): MainWindow.setObjectName ("MainWindow") MainWindow.resize (533, 317) self.centralwiget (Q3) MainWindow) self.centralwidget.setObjectName ("centralwidget") self.gridLayout = QtGui.QGridLayout (self.centralwidget) self.gridLayout.setObjectName ("gridLayout") self.textEdit = QtGui.QTextEdTextEdit (self.centraldit.) Self.textEdit (self.centraldit.) setObjectName ("textEdit") self.gridLayout.addWidget (self.textEdit, 0, 0, 1, 1) MainWindow.setCentralWidget (self.centralwidget) self.menubar = QtGui.QMenuBar (MainWindow) self.menubar.setGeometry (QtCore. QRect (0, 0, 533, 25)) self.menubar.setObjectName ("menubar") self.menu_File = QtGui.QMenu (self.menubar) самостоятелно. menu_File.setObjectName ("menu_File") self.menu_Help = QtGui.QMenu (self.menubar) self.menu_Help.setObjectName ("menu_Help") MainWindow.setMenuBar (self.menubar) self.statusbar = QtGui.QSta. statusbar.setObjectNam e ("лента на състоянието") MainWindow.setStatusBar (self.statusbar) self.action_New = QtGui.QAction (MainWindow) self.action_Nuevo.setObjectName ("action_New") self.action_Open = QtGui.QAction (MainWmene_Action) self.action_bjectName (SetObjectName) "action_Abrir") self.action_Save = QtGui.QAction (MainWindow) self.action_Save.setObjectName ("action_Save") self.actionSave_As = QtGui.QAveAvSave self.action_Quit. QAction (MainWindow) self.action_Quit.setObjectName ("action_Quit") self.actionA_bout = QtGui.QAction (MainWindow) self.actionA_bout.setObjectName ("actionA_bout") =. action_Help (MainWindow) self.action_Help "action_Help") self.menu_File.addAction (self.action_New) self.menu_File.addAction (self.action_Open) self.menu_File.addAction (self.action_Save) self.menu_File.adAction ) self.menu_File (self.ActionSave_As) self.menu_File self.action_Quit) self.menu_Help.addAction (self.actionA_bout) self.menu_Help.addAction (self. action_Help) self.menubar.addAction (self.menu_File.menuAction ()) self.menubar.addAction (self.menu_Help.menuAction ()) self.retranslateUi (MainWindow) QtCore.QObject.connect (self.action_Quit, QtCore.SIGNAL self.action_Quit, QtCore.SIGNAL ("задействано ()"), MainWindow.close) QtCore.QMetaObject.connectSlotsByName (MainWindow) def retranslateUi (self, MainWindow): MainWindow.setWindowTitle (QtGui.QApplication, MiEditor ", None, QApplicationGui", None, QApplicationGui ".UnicodeUTF8)) self.menu_File.setTitle (QtGui.QApplication.translate (" MainWindow "," & File ", None, QtGui.QApplication.UnicodeUTF8_p) setTitle ("QtGui.QApplication.translate", "QtGui.QApplication.translate" & Help ", Няма, QtGui.QApplication.UnicodeUTF8)) self.action_Nuevo.setText (QtGui.QApplication.translate (" & NewWindow "," , Няма, QtGui.QApplication.UnicodeUTF8)) self.action_Abrir.setText (QtGui.Abrir.setText (QtGui.Abrir.setText (QtGui.Abrir.setText). QApplication.UnicodeUTF8)) self.action_Save.setText (QtGui.QApplication.translate ("MainWindow", "& Save", Няма, QtGui.QApplication.UnicodeUTF8)) self.actionSave_As.setText (QtGui.QApplication.translate ("MainWindow", "Save & As", Няма, QtGui.QApplication.UnicodeUTF8))) self.action_Quit.setTixt " self.translate ") MainWindow", "& Exit", None, QtGui.QApplication.UnicodeUTF8)) self.actionA_bout.setText (QtGui.QApplication.translate ("MainWindow", "За & близо", Няма, QtGui.QApplication. UnicodeUTFelp8)) self.action_HnicodeUTFelp8)). SetText (QtGui.QApplication.translate ("MainWindow", "& Техническа поддръжка", Няма, QtGui.QApplication.UnicodeUTF8)) 
След това ще трябва да програмираме кода, за да дадем функционалност на редактора, като създаваме екземпляри за всяко меню и текстовото поле, кодът е доста обширен, тук разработваме само дизайна на интерфейса и неговото преобразуване …
Създаването на графичен потребителски интерфейс с Qt Designer улеснява проектирането на приложения и също така е чудесен инструмент за обучение, тъй като кодът ще зависи от нас.
Qt Designer ви позволява да видите свойствата на всеки компонент преди да го преведете, програмирането може да се извършва и без графичния интерфейс директно във всеки текстов редактор, ако познаваме необходимите библиотеки и техните свойства.
Python може също да обработва приложения, които се свързват с бази данни като Mysql или Sqlite, чрез връзка и операции с бази данни с Python, можем също така да добавим визуален интерфейс към нашето приложение, създадено с графичните библиотеки на Qt с помощта на PyQt. Ще продължим напред с програмирането на графични интерфейси за потребители с Python в друг урок.Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка
wave wave wave wave wave