Plattformsoberoende applikationer med Python, PyQT och QT Desginer 5

Innehållsförteckning
Python är ett programmeringsspråk till vilken kännetecknande för att vara multiparadigm som tillåter programmering med ett objektorienterat och funktionellt paradigm, har ett standardiserat bibliotek.
Det finns många Python -verktyg och bibliotek för att utveckla programvara och webbapplikationer, för skärmdesign kan vi använda olika bibliotek som t.ex. wxPython, PyQt, PySide eller PyGTK för att rita vårt gränssnitt och sedan programmera, det finns också webbramar som Django, i denna handledning kommer vi att se hur man skapar plattformsoberoende stationära applikationer med PyQT 5.

PyQt5 är en Python -verktygsbibliotek för honom QT5 -ramverk. Den är tillgänglig för Python 3.x.
PyQt5 implementeras som en uppsättning Python -moduler. Det tillåter oss att länka de mönster som vi gör med QT Designer och sedan kunna översätta dem med Py Qt så att de är körbara under Python i alla operativsystem som Linux Windows och Mac OS.
För att utveckla applikationer måste vi installera nödvändiga program och beroenden. Denna handledning använder en version av Linux Mint som operativsystem, men den kan anpassas till alla operativsystem.
I andra självstudier använder vi Qt för att programmera i C ++, Multiplatform -programmering i C ++ och Qt under GNU / Linux -miljö och QT -programmering och SQLite -databaser.
Låt oss först installera QT Designer 5, från ett terminalfönster laddar vi ner och installerar det
 $ 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
Därefter måste vi installera Python -utvecklingsbiblioteken:
 sudo apt-get install pyqt5-dev-tools
Därefter måste vi installera ett Python -tillägg som heter SIP som är en kodgenerator som är speciellt utformad för att skapa Python -kod. Detta gör att Qt Designer -designfilen kan läsas och översättas till Python -kod. Den genererade koden kan kompileras för Python v2 och v3.
Vi laddar ner SIP från den officiella webbplatsen, sedan går vi till mappen där vi laddade ner den, packade upp filen sip-4.17.tar.gz, öppnar mappen och konfigurerar SIP och installerar med följande kod från terminalfönstret.
 python configure.py gör make install
Vi ställer in QT5 som standardversion:
 sudo apt-get install qt5-default
Slutligen laddar vi ner och installerar PyQt som är de bibliotek som vi behöver för att länka Python och QT Designer
Ladda ner PyQt från dess officiella webbplats, sedan går vi till mappen där vi laddade ner den, packade upp PyQt -filen och öppnade mappen och konfigurerade den med följande kod från terminalfönstret.
 python configure.py
Vi ska skapa en enkel applikation från Qt designer, vi kommer att göra designen genom att ta ett formulär, vi kommer bara att vara intresserade av filen med tillägget ui som kommer att vara designgränssnittet. Vårt projekt heter Dialoga.

Därefter väljer vi vilken typ av fönster som vår applikation ska använda, i det här fallet använder vi en dialog med två knappar som en mall.

Sedan har vi skärmen med vårt fönster att designa, vi lägger till en TextEdit och sparar filen

Sedan går vi till projektmappen, motsvarande c ++ - filer har också genererats men vi kommer bara att använda ui -filen.
Nästa från terminalen måste vi översätta dialoga.ui -filen till python, från terminalfönstret använder vi följande kommando:
 pyuic5 -o dialoga.py dialoga.ui

Detta genererar dialog.py -filen som är den design vi hade i c ++ nu tillgänglig i Python, koden är följande
 # - * - kodning: utf -8 - * - # Formimplementering genererad från läsning av ui -filen 'dialoga.ui' # # Skapad: mån 26 oktober 21:31:56 2015 # av: PyQt5 UI -kodgenerator 5.2.1 från PyQt5 importera QtCore, QtGui, QtWidgets klass Ui_DialogA (objekt): def setupUi (self, DialogA): DialogA.setObjectName ("DialogA") DialogA.resize (400, 300) self.buttonBox = QtWidgets.QDialogButtonBox (DialogA) self.button DialogA) self. SetGeometry (QtCore.QRect (30, 240, 341, 32)) self.buttonBox.setOrientation (QtCore.Q. . ("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.QCore plication.translate DialogA.setWindowTitle (_translate ("DialogA", "Dialog"))
Detta är allt vi designar i Qt Designer, nu måste vi länka den till en kod som använder den, för detta skapar vi en fil startup.py och skriver följande kod:
 importera sys från PyQt5.QtWidgets importera QApplication, QDialog från dialoga import * app = QApplication (sys.argv) fönster = QDialog () ui = Ui_DialogA () ui.setupUi (fönster) window.show () sys.exit (app.exec_) ())
Vi ser att vi importerar de grafiska displaybiblioteken och importerar fildialogen med designen.
Sedan anger vi att fönstret kommer att vara en dialog, ui -fönstret kommer att ha designen definierad i Ui_DialogA () -klassen definierad i designfilen och slutligen att designen tilldelas fönstret via setupUi -funktionen.
Vi sparar och kör från kommandofönstret enligt följande:
 python3 home.py

Vi kommer att skapa en enkel men funktionell textredigerare nedan. Vi kommer att skapa ett nytt projekt där vi är intresserade av att skapa de grafiska gränssnitten. Vi kommer att kalla projektet MyEditor.

Vi väljer sedan MainWindow som mall. I designen kan vi ha en meny och en textredigering. Här kommer det att vara viktigt att ge varje objekt ett namn så att det kan identifieras senare och refereras från Python -koden. Sedan sparar vi den och konverterar ui -filen till python.
Vi gör omvandlingen från terminalfönstret med följande kommando:
 pyuic5 -o mieditor.py mieditor.ui
Designkoden i python kommer att vara följande:
 # - * - kodning: utf -8 - * - # Formimplementering genererad från läsning av ui -filen '/testqt/mieditor.ui' # # Skapad: mån 26 oktober 10:32:56 2015 # av: PyQt5 UI -kodgenerator 5.2. 1 # # VARNING! Alla ändringar som görs i den här filen kommer att gå förlorade! från PyQt5 import QtCore, QMainWindow, QApplication, QtGui, QtWidgets klass Ui_MainWindow (objekt): def setupUi (self, MainWindow): MainWindow.setObjectName ("MainWindow") MainWindow.resize (533, 317) self.centralw. MainWindow) self.centralwidget.setObjectName ("centralwidget") self.gridLayout = QtGui.QGridLayout (self.centralwidget) self.gridLayout.setObjectName ("gridLayout") self.textEdit = QtGui.QTextEditEndit. (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 ("menyrad") self.menu_File = QtGui.QMenu (self.menubar) själv. 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.QStatusBar) statusbar.setObjectNam e ("statusrad") 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.actionSave_As.set " 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 (Main. 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_As) ) 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.SIGN ( self.action_Quit, QtCore.SIGNAL ("triggered ()"), 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)) self.menu. setTitle ("QtGui.QApplication.translate", "QtGui.QApplication.translate" & Help ", None, QtGui.QApplication.UnicodeUTF8)) self.action_Nuevo.setText (QtGui.QApplication.translate (" MainWindow "," & "NewWindow", "&" NewWindow "," New " , None, QtGui.QApplication.UnicodeUTF8)) self.action_Abrir.setText (QtGui.Abrir.setText (QtGui.Abrir.setText (QtGui.Abrir.setText) .translate ("MainWindow", "& Open", Q, 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. " 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)) 
Därefter måste vi programmera koden för att ge redigeraren funktionalitet, instansera varje meny och textområdet koden är ganska omfattande, här utvecklar vi bara gränssnittsdesignen och dess konvertering …
Skapandet av det grafiska användargränssnittet med Qt Designer gör det enklare att designa applikationer och det är också ett bra inlärningsverktyg eftersom koden kommer att bero på oss.
Qt Designer låter dig se egenskaperna för varje komponent innan du översätter den, programmering kan också göras utan det grafiska gränssnittet direkt i någon textredigerare om vi känner till nödvändiga bibliotek och deras egenskaper.
Python kan också hantera applikationer som ansluter till databaser som Mysql eller Sqlite, genom en anslutning och operationer på databaser med Python, kan vi också lägga till ett visuellt gränssnitt till vår applikation skapad med de grafiska biblioteken för Qt med PyQt. Vi kommer att gå vidare med programmeringen av grafiska gränssnitt för användare med Python i en annan handledning.Gillade du och hjälpte denna handledning?Du kan belöna författaren genom att trycka på den här knappen för att ge honom en positiv poäng
wave wave wave wave wave