Tverrplattformapplikasjoner med Python, PyQT og QT Desginer 5

Innholdsfortegnelse
Python er et programmeringsspråk som den karakteristisk for å være multiparadigme som tillater programmering med et objektorientert og funksjonelt paradigme, har et standardisert bibliotek.
Det er mange Python -verktøy og biblioteker for å utvikle programvare og webapplikasjoner, når det gjelder skjermdesign kan vi bruke forskjellige biblioteker som f.eks. wxPython, PyQt, PySide eller PyGTK for å tegne grensesnittet vårt og deretter programmere, er det også webrammer som Django, i denne opplæringen vil vi se hvordan du lager desktop-applikasjoner på tvers av plattformer ved hjelp av PyQT 5.

PyQt5 er en Python verktøy bibliotek for han QT5 -rammeverk. Den er tilgjengelig for Python 3.x.
PyQt5 er implementert som et sett med Python -moduler. Det lar oss koble designene vi lager med QT Designer og deretter kunne oversette dem med Py Qt slik at de kan kjøres under Python i alle operativsystemer som Linux Windows og Mac OS.
For å utvikle applikasjoner må vi installere de nødvendige programmene og avhengighetene. Denne opplæringen bruker en versjon av Linux Mint som operativsystem, men den kan tilpasses ethvert operativsystem.
I andre opplæringsprogrammer bruker vi Qt til å programmere i C ++, Multiplatform Programming i C ++ og Qt under GNU / Linux Environment og QT Programming og SQLite databaser.
La oss først installere QT Designer 5, fra et terminalvindu laster vi ned og installerer 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
Deretter må vi installere Python -utviklingsbibliotekene:
 sudo apt-get install pyqt5-dev-tools
Deretter må vi installere en Python -utvidelse kalt SIP, som er en kodegenerator som er spesielt designet for å lage Python -kode. Dette vil tillate Qt Designer -designfilen å bli lest og oversatt til Python -kode. Den genererte koden kan kompileres for Python v2 og v3.
Vi laster ned SIP fra det offisielle nettstedet, så går vi til mappen der vi lastet den ned, pakker ut filen sip-4.17.tar.gz, åpner mappen og konfigurerer SIP og installerer med følgende kode fra terminalvinduet.
 python configure.py gjør make install
Vi setter QT5 som standardversjon:
 sudo apt-get install qt5-standard
Til slutt laster vi ned og installerer PyQt som er bibliotekene vi trenger for å koble Python og QT Designer
Last ned PyQt fra det offisielle nettstedet, så går vi til mappen der vi lastet den ned, pakker ut PyQt -filen og får tilgang til mappen og konfigurerer den med følgende kode fra terminalvinduet.
 python configure.py
Vi skal lage en enkel applikasjon fra Qt designer. Vi vil lage designet ved å ta et skjema, vi vil bare være interessert i filen med ui -utvidelsen som vil være designgrensesnittet. Prosjektet vårt heter Dialoga.

Deretter velger vi hvilken vindustype applikasjonen vår skal bruke, i dette tilfellet bruker vi en dialog med to knapper som en mal.

Deretter vil vi ha skjermen med vinduet vårt å designe, vi legger til en TextEdit og lagrer filen

Deretter går vi til prosjektmappen, de tilsvarende c ++ - filene vil også ha blitt generert, men vi vil bare bruke ui -filen.
Neste fra terminalen må vi oversette dialoga.ui -filen til python, fra terminalvinduet bruker vi følgende kommando:
 pyuic5 -o dialoga.py dialoga.ui

Dette genererer dialog.py -filen som er designet vi hadde i c ++ nå tilgjengelig i Python, koden er som følger
 # - * - koding: utf -8 - * - # Skjemaimplementering generert fra å lese ui -filen 'dialoga.ui' # # Opprettet: 26. okt. 21:31:56 2015 # av: 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.Q. . ("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 vi designer i Qt Designer, nå må vi koble den til en kode som bruker den. For dette lager vi en fil startup.py og skriver følgende kode:
 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_) ())
Vi ser at vi importerer de grafiske visningsbibliotekene og importerer fildialogboksen med designet.
Deretter indikerer vi at vinduet vil være en dialog, ui -vinduet vil ha designet definert i Ui_DialogA () klassen definert i designfilen og til slutt at designet blir tilordnet vinduet gjennom setupUi -funksjonen.
Vi lagrer og kjører fra kommandovinduet som følger:
 python3 home.py

Vi skal lage en enkel, men funksjonell tekstredigerer nedenfor. Vi skal lage et nytt prosjekt der vi er interessert i å lage de grafiske grensesnittene. Vi vil kalle prosjektet MyEditor.

Vi velger deretter MainWindow som en mal. I designet kan vi ha en meny og en tekstredigering. Her vil det være viktig å gi hvert objekt et navn, slik at det kan identifiseres senere og refereres til fra Python -koden. Så lagrer vi den og konverterer ui -filen til python.
Vi gjør konverteringen fra terminalvinduet med følgende kommando:
 pyuic5 -o mieditor.py mieditor.ui
Designkoden i python vil være følgende:
 # - * - koding: utf -8 - * - # Skjemaimplementering generert fra lesing av ui -filen '/testqt/mieditor.ui' # # Opprettet: 26. okt. 10:32:56 2015 # av: PyQt5 UI -kodegenerator 5.2. 1 # # ADVARSEL! Alle endringer i denne filen vil gå tapt! 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. MainWindow) self.centralwidget.setObjectName ("centralwidget") self.gridLayout = QtGui.QGridLayout (self.centralwidget) self.gridLayout.setObjectName ("gridLayout") self.textEdit = QtGui.QTextEditEdit. self. (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 ("menylinje") 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.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 (" NewWindow "," & " , None, QtGui.QApplication.UnicodeUTF8)) self.action_Abrir.setText (QtGui.Abrir.setText (QtGui.Abrir.setText (QtGui.Abrir.setText) .translate ("MainWindow", "& Open", None,. 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)) 
Deretter må vi programmere koden for å gi funksjonalitet til redaktøren, instantiating hver meny og tekstområdet koden er ganske omfattende, her utvikler vi bare grensesnittdesignet og dets konvertering …
Opprettelsen av det grafiske brukergrensesnittet med Qt Designer, gjør det enklere å designe applikasjoner, og det er også et flott læringsverktøy siden koden vil avhenge av oss.
Qt Designer lar deg se egenskapene til hver komponent før du oversetter den. Programmering kan også gjøres uten det grafiske grensesnittet direkte i et tekstredigeringsprogram hvis vi kjenner de nødvendige bibliotekene og deres egenskaper.
Python kan også håndtere applikasjoner som kobler seg til databaser som Mysql eller Sqlite, gjennom en tilkobling og operasjoner på databaser med Python, kan vi også legge til et visuelt grensesnitt til applikasjonen vår som er opprettet med de grafiske bibliotekene til Qt ved hjelp av PyQt. Vi kommer videre med programmeringen av grafiske grensesnitt for brukere med Python i en annen opplæring.Likte og hjalp du denne opplæringen?Du kan belønne forfatteren ved å trykke på denne knappen for å gi ham et positivt poeng

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave