Cross-platform applikationer med Python, PyQT og QT Desginer 5

Indholdsfortegnelse
Python er et programmeringssprog hvortil karakteristisk for at være multiparadigme som tillader programmering med et objektorienteret og funktionelt paradigme, har et standardiseret bibliotek.
Der er mange Python -værktøjer og biblioteker til at udvikle software og webapplikationer, i tilfælde af skærmdesign kan vi bruge forskellige biblioteker som f.eks. wxPython, PyQt, PySide eller PyGTK for at tegne vores interface og derefter programmere, er der også webrammer som Django, i denne vejledning vil vi se, hvordan man opretter desktop-applikationer på tværs af platforme vha. PyQT 5.

PyQt5 er en Python værktøjsbibliotek For ham QT5 ramme. Den er tilgængelig til Python 3.x.
PyQt5 er implementeret som et sæt Python -moduler. Det giver os mulighed for at forbinde de designs, vi laver med QT Designer, og derefter kunne oversætte dem med Py Qt, så de kan eksekveres under Python i alle operativsystemer som Linux Windows og Mac OS.
For at udvikle applikationer skal vi installere de nødvendige programmer og afhængigheder. Denne vejledning bruger en version af Linux Mint som operativsystem, men den kan tilpasses ethvert operativsystem.
I andre tutorials bruger vi Qt til at programmere i C ++, Multiplatform Programming i C ++ og Qt under GNU / Linux Environment og QT Programming og SQLite databaser.
Lad os først installere QT Designer 5, fra et terminalvindue downloader og installerer vi 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
Dernæst skal vi installere Python -udviklingsbibliotekerne:
 sudo apt-get install pyqt5-dev-tools
Dernæst skal vi installere en Python -udvidelse kaldet SIP, som er en kodegenerator, der er specielt designet til at oprette Python -kode. Dette gør det muligt at læse og oversætte Qt Designer -designfilen til Python -kode. Den genererede kode kan kompileres til Python v2 og v3.
Vi downloader SIP fra det officielle websted, derefter går vi til den mappe, hvor vi downloadede den, pakker filen sip-4.17.tar.gz ud, åbner mappen og konfigurerer SIP og installerer med følgende kode fra terminalvinduet.
 python configure.py lav make install
Vi indstiller QT5 som standardversionen:
 sudo apt-get install qt5-standard
Endelig downloader og installerer vi PyQt, som er de biblioteker, vi skal bruge til at linke Python og QT Designer
Download PyQt fra dets officielle websted, så går vi til den mappe, hvor vi downloadede den, pakker PyQt -filen ud og får adgang til mappen og konfigurerer den med følgende kode fra terminalvinduet.
 python configure.py
Vi skal oprette en enkel applikation fra Qt designer, vi vil lave designet ved at tage en form, vi vil kun være interesseret i filen med ui -udvidelsen, der vil være designgrænsefladen. Vores projekt hedder Dialoga.

Dernæst vælger vi den type vindue, som vores applikation vil bruge, i dette tilfælde vil vi bruge en dialog med to knapper som en skabelon.

Derefter får vi skærmen med vores vindue til at designe, vi tilføjer en TextEdit og gemmer filen

Derefter går vi til mappen projekter, de tilsvarende c ++ filer vil også være blevet genereret, men vi vil kun bruge ui -filen.
Næste fra terminalen bliver vi nødt til at oversætte dialoga.ui -filen til python, fra terminalvinduet bruger vi følgende kommando:
 pyuic5 -o dialoga.py dialoga.ui

Dette genererer dialog.py -filen, som er det design, vi havde i c ++ nu tilgængelig i Python, koden er som følger
 # - * - kodning: utf -8 - * - # Formimplementering genereret fra læsning af ui -fil 'dialoga.ui' # # Oprettet: mand. 26. oktober 21:31:56 2015 # af: PyQt5 UI -kodegenerator 5.2.1 fra PyQt5 import QtCore, QtGui, QtWidgets klasse 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.Qt.Horizontal) self.buttonBox.setStandardButtons (QtWidgets.QDialogButtonBoxOntButton.BoxOptonButtonBonOtonButtonBonOtonButtonBonOtonButtonBonOtonButtonButtonBonOtonButtonButtonButtonButtonButtonButtonBonOtonButtonButtonButtonButtonButtonBogGå . ("buttonBox") self.textEdit = QtWidgets.QTextEdit (DialogA) self.textEdit.setGeometry (QtCore.QRect (20, 20, 361, 201)) self.textEdit.setObjectName ("textEdit") self.retranslateUi (DialogAi) ) 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"))
Dette er alt, hvad vi designer i Qt Designer, nu skal vi linke det til en kode, der bruger det, til dette vil vi oprette en fil startup.py og skrive følgende kode:
 import sys fra PyQt5.QtWidgets import QApplication, QDialog fra dialoga import * app = QApplication (sys.argv) vindue = QDialog () ui = Ui_DialogA () ui.setupUi (vindue) window.show () sys.exit (app.exec_) ())
Vi ser, at vi importerer de grafiske displaybiblioteker og importerer fildialogen med designet.
Derefter angiver vi, at vinduet vil være en dialog, ui -vinduet vil have designet defineret i Ui_DialogA () -klassen defineret i designfilen, og endelig er det design tildelt vinduet via setupUi -funktionen.
Vi gemmer og udfører fra kommandovinduet som følger:
 python3 home.py

Vi skal oprette en enkel, men funktionel tekstredigerer nedenfor. Vi vil oprette et nyt projekt, hvor vi er interesserede i at skabe de grafiske grænseflader. Vi kalder projektet MyEditor.

Vi vælger derefter MainWindow som en skabelon. I designet kan vi have en menu og en tekstredigering. Her vil det være vigtigt at give hvert objekt et navn, så det senere kan identificeres og refereres fra Python -koden. Derefter gemmer vi den og konverterer ui -filen til python.
Vi foretager konverteringen fra terminalvinduet med følgende kommando:
 pyuic5 -o mieditor.py mieditor.ui
Designkoden i python vil være følgende:
 # - * - kodning: utf -8 - * - # Formimplementering genereret ved læsning af ui -fil '/testqt/mieditor.ui' # # Oprettet: mand. 26. oktober 10:32:56 2015 # af: PyQt5 UI -kodegenerator 5.2. 1 # # ADVARSEL! Alle ændringer i denne fil vil gå tabt! fra PyQt5 import QtCore, QMainWindow, QApplication, QtGui, QtWidgets klasse Ui_MainWindow (objekt): def setupUi (self, MainWindow): MainWindow.setObjectName ("MainWindow") MainWindow.resize (533, 317) self.centralw.Getui. MainWindow) self.centralwidget.setObjectName ("centralwidget") self.gridLayout = QtGui.QGridLayout (self.centralwidget) self.gridLayout.setObjectName ("gridLayout") self.textEdit = QtGui.QTextEditEdit (self.cent.widget). (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 ("menulinje") self.menu_File = QtGui.QMenu (self.menubar) selv. 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 ("statuslinje") 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.setObject_bagset "" 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. vind). 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 "," & " , 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)) 
Dernæst bliver vi nødt til at programmere koden til at give funktionaliteten til editoren, instantiere hver menu og tekstområdet koden er ret omfattende, her udvikler vi kun interface -designet og dets konvertering …
Oprettelse af den grafiske brugergrænseflade med Qt Designer gør det lettere at designe applikationer, og det er også et godt læringsværktøj, da koden afhænger af os.
Qt Designer giver dig mulighed for at se egenskaberne for hver komponent, før du oversætter den, programmering kan også udføres uden den grafiske grænseflade direkte i en hvilken som helst tekstredigerer, hvis vi kender de nødvendige biblioteker og deres egenskaber.
Python kan også håndtere applikationer, der opretter forbindelse til databaser som Mysql eller Sqlite, gennem en forbindelse og operationer på databaser med Python, kan vi også tilføje en visuel grænseflade til vores applikation, der er oprettet med de grafiske biblioteker af Qt ved hjælp af PyQt. Vi kommer videre med programmeringen af ​​grafiske grænseflader til brugere med Python i en anden vejledning.Kan du lide og hjælpe denne vejledning?Du kan belønne forfatteren ved at trykke på denne knap for at give ham et positivt punkt

Du vil bidrage til udviklingen af ​​hjemmesiden, at dele siden med dine venner

wave wave wave wave wave