Aplicații cross-platform cu Python, PyQT și QT Desginer 5

Cuprins
Python este un limbaj de programare la care caracteristică a fi multiparadigm la fel de permite programarea cu o paradigmă orientată obiect și funcțională, are o bibliotecă standardizată.
Există multe instrumente și biblioteci Python pentru a dezvolta aplicații software și web, în ​​cazul proiectării ecranului putem folosi diverse biblioteci, cum ar fi wxPython, PyQt, PySide sau PyGTK pentru a desena interfața noastră și apoi pentru a programa, există și cadre web precum Django, în acest tutorial vom vedea cum să creăm aplicații desktop pe mai multe platforme folosind PyQT 5.

PyQt5 este un Biblioteca de instrumente Python pentru el Cadrul QT5. Este disponibil pentru Python 3.x.
PyQt5 este implementat ca un set de module Python. Ne permite să conectăm proiectele pe care le realizăm cu QT Designer și apoi să le putem traduce cu Py Qt, astfel încât să poată fi executate sub Python în toate sistemele de operare, cum ar fi Linux Windows și Mac OS.
Pentru a dezvolta aplicații, trebuie să instalăm programele și dependențele necesare. Acest tutorial va utiliza o versiune de Linux Mint ca sistem de operare, dar poate fi adaptată oricărui sistem de operare.
În alte tutoriale folosim Qt pentru a programa în C ++, Programare multiplatformă în C ++ și Qt în GNU / Linux Environment și programare QT și baze de date SQLite.
Să instalăm mai întâi QT Designer 5, din fereastra terminalului îl descărcăm și îl instalăm
 $ 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
Apoi trebuie să instalăm bibliotecile de dezvoltare Python:
 sudo apt-get install pyqt5-dev-tools
În continuare trebuie să instalăm o extensie Python numită SIP, care este un generator de cod special conceput pentru crearea codului Python. Aceasta va permite ca fișierul de proiectare Qt Designer să fie citit și tradus în cod Python. Codul generat poate fi compilat pentru Python v2 și v3.
Descarcăm SIP de pe site-ul oficial, apoi mergem la folderul în care l-am descărcat, dezarhivăm fișierul sip-4.17.tar.gz, accesăm folderul și configurăm SIP și instalăm cu următorul cod din fereastra terminalului.
 python configure.py make make install
Am setat QT5 ca versiune implicită:
 sudo apt-get install qt5-default
În cele din urmă, descărcăm și instalăm PyQt, care sunt bibliotecile de care vom avea nevoie pentru a lega Python și QT Designer
Descărcați PyQt de pe site-ul său oficial, apoi mergem la folderul în care l-am descărcat, dezarhivați fișierul PyQt și accesați folderul și îl configurați cu următorul cod din fereastra terminalului.
 python configure.py
Vom crea o aplicație simplă de la designerul Qt, vom face proiectarea luând un formular, ne va interesa doar fișierul cu extensia ui care va fi interfața de proiectare. Proiectul nostru se numește Dialoga.

Apoi vom selecta tipul de fereastră pe care îl va folosi aplicația noastră, în acest caz vom folosi un dialog cu două butoane ca șablon.

Apoi vom avea ecranul cu fereastra noastră de proiectat, adăugăm un TextEdit și salvăm fișierul

Apoi mergem la folderul de proiecte, fișierele c ++ corespunzătoare vor fi generate și ele, dar vom folosi doar fișierul ui.
Apoi de la terminal va trebui să traducem fișierul dialoga.ui în python, din fereastra terminalului vom folosi următoarea comandă:
 pyuic5 -o dialoga.py dialoga.ui

Aceasta generează fișierul dialog.py care este designul pe care l-am avut în c ++ acum disponibil în Python, codul este după cum urmează
 . import QtCore, QtGui, QtWidgets class Ui_DialogA (object): def setupUi (self, DialogA): DialogA.setObjectName ("DialogA") DialogA.resize (400, 300) self.buttonBox = QtWidgets.QDialogButtonBox (DialogA) self.b DialogA) self. SetGeometry (QtCore.QRect (30, 240, 341, 32)) self.buttonBox.setOrientation (QtCore.Qt.Horizontal) self.buttonBox.setStandardButtons (QtWidgets.QDialogButtonBox.Cancel | . ("buttonBox") self.textEdit = QtWidgets.QTextEdit (DialogA) self.textEdit.setGeometry (QtCore.QRect (20, 20, 361, 201)) self.textEdit.setObjectName ("textEdit") self.retranslateUi (DialogA ) self.buttonBox.accepted.connect (DialogA.accept) self.buttonBox.rejected.connect (DialogA.reject) QtCore.QMetaObject.connectSlotsByName (DialogA) def retranslateUi (self, DialogA): _translate = QtCore.QC plication.translate DialogA.setWindowTitle (_translate ("DialogA", "Dialog"))
Acesta este tot ceea ce proiectăm în Qt Designer, acum trebuie să îl conectăm la un cod care îl folosește, pentru aceasta vom crea un fișier startup.py și vom scrie următorul cod:
 import sys from PyQt5.QtWidgets import QApplication, QDialog from dialoga import * app = QApplication (sys.argv) window = QDialog () ui = Ui_DialogA () ui.setupUi (window) window.show () sys.exit (app.exec_ ())
Vedem că importăm bibliotecile de afișare grafică și importăm dialogul de fișiere cu designul.
Apoi indicăm că fereastra va fi un dialog, fereastra ui va avea designul definit în clasa Ui_DialogA () definit în fișierul de proiectare și în cele din urmă acel design este atribuit ferestrei prin funcția setupUi.
Salvăm și executăm din fereastra de comandă după cum urmează:
 python3 home.py

Vom crea mai jos un editor de text simplu, dar funcțional. Vom crea un nou proiect în care suntem interesați să creăm interfețe grafice. Vom numi proiectul MyEditor.

Apoi selectăm MainWindow ca șablon. În design putem avea un meniu și un textedit. Aici va fi important să acordați fiecărui obiect un nume, astfel încât să poată fi identificat ulterior și referit din codul Python. Apoi îl salvăm și convertim fișierul ui în python.
Conversia o facem din fereastra terminalului cu următoarea comandă:
 pyuic5 -o mieditor.py mieditor.ui
Codul de proiectare în python va fi următorul:
 # - * - codare: utf-8 - * - # Implementarea formularului generată din citirea fișierului ui '/testqt/mieditor.ui' # # Creat: luni, 26 oct. 1 # # AVERTISMENT! Toate modificările făcute în acest fișier se vor pierde! din PyQt5 import QtCore, QMainWindow, QApplication, QtGui, QtWidgets class Ui_MainWindow (object): def setupUi (self, MainWindow): MainWindow.setObjectName ("MainWindow") MainWindow.resize (533, 317) self.centralwid. MainWindow) self.centralwidget.setObjectName ("centralwidget") self.gridLayout = QtGui.QGridLayout (self.centralwidget) self.gridLayout.setObjectName ("gridLayout") self.textEdit = QtGui.QTextEdit (self.cit.text). (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) self. 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.QindusBar. statusbar.setObjectNam e ("statusbar") MainWindow.setStatusBar (self.statusbar) self.action_New = QtGui.QAction (MainWindow) self.action_Nuevo.setObjectName ("action_New") self.action_Open = QtGui.QAction (MainWindow) self.action_bjectName (MainWindow) self.action_bjectName (SetObjectName) "action_Abrir") self.action_Save = QtGui.QAction (MainWindow) self.action_Save.setObjectName ("action_Save") self.actionSave_As = QtGui.QAction (MainWindow) self.actionS " self.action_Quit. QAction (MainWindow) self.action_Quit.setObjectName ("action_Quit") self.actionA_bout = QtGui.QAction (MainWindow) self.actionA_bout.setObjectName ("actionA_bout") self.action_Help = QtGui.QAction. 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.addAction (self.menu_ ) 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 ("triggered ()"), MainWindow.close) QtCore.QMetaObject.connectSlotsByName (MainWindow) def retranslateUi (self, MainWindow): MainWindow.setWindowTitle (QtGui.index "Quind." MiEditor ", None, QApplicationGui", None, QApplicationGui ".UnicodeUTF8)) self.menu_File.setTitle (QtGui.QApplication.translate (" MainWindow "," & File ", None, QtGui.QApplication.UnicodeUTF8)) self.men. setTitle ("QtGui.QApplication.translate", "QtGui.QApplication.translate" & Help ", None, QtGui.QApplication.UnicodeUTF8)) self.action_Nuevo.setText (QtGui.QApplication.translate (" MainWindow "," & , None, QtGui.QApplication.UnicodeUTF8)) self.action_Abrir.setText (QtGui.Abrir.setText (QtGui.Abrir.setText (QtGui.Abrir.setText) .translate ("MainWindow", "& Open", None, QtGui. QApplication.UnicodeUTF8)) self.action_Save.setText (QtGui.QApplication.translate ("MainWindow", "& Save", None, QtGui.QApplication.UnicodeUTF8)) self.actionSave_As.setText (QtGui.QApplication.translate ("MainWindow", "Save & As", None, QtGui.QApplication.UnicodeUTF8))) self.action_Quit.setText (QtGui.Q self.translate ") MainWindow", "& Exit", None, QtGui.QApplication.UnicodeUTF8)) self.actionA_bout.setText (QtGui.QApplication.translate ("MainWindow", "To & near", None, QtGui.QApplication. UnicodeUTFelp8)) self.action_HnicodeUTFelp8)). SetText (QtGui.QApplication.translate ("MainWindow", "& Technical Support", None, QtGui.QApplication.UnicodeUTF8)) 
Apoi va trebui să programăm codul pentru a da funcționalitate editorului, instanțând fiecare meniu și textarea codului este destul de extins, aici dezvoltăm doar designul interfeței și conversia acestuia …
Crearea interfeței grafice cu Qt Designer, facilitează proiectarea aplicațiilor și este, de asemenea, un instrument excelent de învățare, deoarece codul va depinde de noi.
Qt Designer vă permite să vedeți proprietățile fiecărei componente înainte de a o traduce, programarea se poate face și fără interfața grafică direct în orice editor de text dacă cunoaștem bibliotecile necesare și proprietățile acestora.
Python poate gestiona și aplicații care se conectează la baze de date precum Mysql sau Sqlite, printr-o conexiune și operațiuni pe baze de date cu Python, putem adăuga și o interfață vizuală aplicației noastre creată cu bibliotecile grafice ale Qt folosind PyQt. Vom avansa în continuare cu programarea interfețelor grafice pentru utilizatorii cu Python într-un alt tutorial.V-a plăcut și ați ajutat acest tutorial?Puteți recompensa autorul apăsând acest buton pentru a-i oferi un punct pozitiv

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave