Inhaltsverzeichnis
Python ist eine Programmiersprache zu denen die Eigenschaft, multiparadigmatisch zu sein wie ermöglicht die Programmierung mit einem objektorientierten und funktionalen Paradigma, verfügt über eine standardisierte Bibliothek.Es gibt viele Python-Tools und -Bibliotheken, um Software und Webanwendungen zu entwickeln, im Fall des Screendesigns können wir verschiedene Bibliotheken verwenden, wie z wxPython, PyQt, PySide oder PyGTK Um unsere Schnittstelle zu zeichnen und dann zu programmieren, gibt es auch Web-Frameworks wie Django. In diesem Tutorial werden wir sehen, wie man plattformübergreifende Desktop-Anwendungen erstellt mit PyQT 5.
PyQt5 ist ein Python-Toolbibliothek für ihn QT5-Framework. Es ist für Python 3.x verfügbar.
PyQt5 ist als eine Reihe von Python-Modulen implementiert. Es ermöglicht uns, die Designs, die wir mit QT Designer erstellen, zu verknüpfen und sie dann mit Py Qt zu übersetzen, sodass sie unter Python in allen Betriebssystemen wie Linux Windows und Mac OS ausführbar sind.
Um Anwendungen zu entwickeln, müssen wir die notwendigen Programme und Abhängigkeiten installieren.Dieses Tutorial verwendet eine Version von Linux Mint als Betriebssystem, die jedoch an jedes Betriebssystem angepasst werden kann.
In anderen Tutorials verwenden wir Qt zum Programmieren in C++, Multiplatform Programming in C++ und Qt unter GNU/Linux Environment und QT Programming und SQLite-Datenbanken.
Lassen Sie uns zuerst QT Designer 5 installieren, von einem Terminalfenster laden wir es herunter und installieren es
$ 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.runAls nächstes müssen wir die Python-Entwicklungsbibliotheken installieren:
sudo apt-get install pyqt5-dev-toolsAls nächstes müssen wir eine Python-Erweiterung namens SIP installieren, die ein Codegenerator ist, der speziell zum Erstellen von Python-Code entwickelt wurde. Dadurch kann die Designdatei von Qt Designer gelesen und in Python-Code übersetzt werden. Der generierte Code kann für Python v2 und v3 kompiliert werden.
Wir laden SIP von der offiziellen Website herunter, gehen dann in den Ordner, in den wir es heruntergeladen haben, entpacken die Datei sip-4.17.tar.gz, greifen auf den Ordner zu und konfigurieren SIP und installieren mit dem folgenden Code aus dem Terminalfenster.
python configure.py make make installAls Standardversion haben wir QT5 eingestellt:
sudo apt-get install qt5-defaultSchließlich laden wir PyQt herunter und installieren es, das sind die Bibliotheken, die wir benötigen, um Python und QT Designer zu verknüpfen
Laden Sie PyQt von der offiziellen Website herunter, gehen Sie dann in den Ordner, in den wir es heruntergeladen haben, entpacken Sie die PyQt-Datei, greifen Sie auf den Ordner zu und konfigurieren Sie ihn mit dem folgenden Code aus dem Terminalfenster.
python-configure.pyWir werden eine einfache Anwendung von Qt Designer erstellen. Wir werden das Design mithilfe eines Formulars erstellen. Wir sind nur an der Datei mit der ui-Erweiterung interessiert, die die Designoberfläche darstellt. Unser Projekt heißt Dialoga.
Als nächstes wählen wir den Fenstertyp aus, den unsere Anwendung verwenden wird, in diesem Fall verwenden wir einen Dialog mit zwei Schaltflächen als Vorlage.
Dann haben wir den Bildschirm mit unserem Fenster zum Gestalten, wir fügen ein TextEdit hinzu und speichern die Datei
Dann gehen wir in den Projektordner, die entsprechenden c++-Dateien werden auch generiert, aber wir verwenden nur die ui-Datei.
Als nächstes müssen wir vom Terminal aus die Datei dialoga.ui in Python übersetzen, aus dem Terminalfenster verwenden wir den folgenden Befehl:
pyuic5 -o dialoga.py dialoga.uiDadurch wird die Datei dialog.py generiert, die das Design ist, das wir in c ++ hatten und jetzt in Python verfügbar sind. Der Code lautet wie folgt:
# - * - Kodierung: utf-8 - * - # Formularimplementierung generiert aus dem Lesen der UI-Datei 'dialoga.ui' # # Erstellt: Mon Okt 26 21:31:56 2015 # von: PyQt5 UI Code Generator 5.2.1 aus 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.buttonBox ( DialogA) self. setGeometry (QtCore.QRect (30, 240, 341, 32)) self.buttonBox.setOrientation (QtCore.Qt.Horizontal) self.buttonBox.setStandardButtons (QtWidgets.QDialogButtonBox.Cancel | QtWidgets.QDialogtonBsetOsetObutton.QDialogtonBsetOsetOButtonButton.OffQDialog ("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.QCoreAp plication.translate DialogA.setWindowTitle (_translate ("DialogA", "Dialog"))Dies ist alles, was wir in Qt Designer entwerfen. Jetzt müssen wir es mit einem Code verknüpfen, der es verwendet. Dazu erstellen wir eine Datei startup.py und schreiben den folgenden Code:
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_ ())Wir sehen, dass wir die Grafikanzeigebibliotheken importieren und den Dateidialog mit dem Design importieren.
Dann geben wir an, dass window ein Dialog ist, das UI-Fenster hat das Design, das in der Ui_DialogA()-Klasse definiert ist, die in der Designdatei definiert ist, und schließlich wird das Design dem Fenster durch die setupUi-Funktion zugewiesen.
Wir speichern und führen aus dem Befehlsfenster wie folgt aus:
python3 home.pyWir werden im Folgenden einen einfachen, aber funktionalen Texteditor erstellen. Wir werden ein neues Projekt erstellen, bei dem wir daran interessiert sind, die grafischen Oberflächen zu erstellen. Wir nennen das Projekt MyEditor.
Als Vorlage wählen wir dann MainWindow aus. Im Design können wir ein Menü und eine Textbearbeitung haben. Hier ist es wichtig, jedem Objekt einen Namen zu geben, damit es später identifiziert und vom Python-Code referenziert werden kann. Dann speichern wir es und konvertieren die ui-Datei in Python.
Wir führen die Konvertierung aus dem Terminalfenster mit dem folgenden Befehl durch:
pyuic5 -o mieditor.py mieditor.uiDer Designcode in Python sieht wie folgt aus:
# - * - Kodierung: utf-8 - * - # Formularimplementierung generiert aus dem Lesen der UI-Datei '/testqt/mieditor.ui' # # Erstellt: Mo 26 Okt 10:32:56 2015 # von: PyQt5 UI Code Generator 5.2. 1 # # ACHTUNG! Alle in dieser Datei vorgenommenen Änderungen gehen verloren! aus PyQt5 import QtCore, QMainWindow, QApplication, QtGui, QtWidgets Klasse Ui_MainWindow (Objekt): def setupUi (self, MainWindow): MainWindow.setObjectName ("MainWindow") MainWindow.resize (533, 317) self.centralwidget (QtGui.Q) MainWindow) self.centralwidget.setObjectName ("centralwidget") self.gridLayout = QtGui.QGridLayout (self.centralwidget) self.gridLayout.setObjectName ("gridLayout") self.textEdit = QtGui.QTextEdit (self.centraldit.) Self.textEdit (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.QStatusBar (MainWindow) self. 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.actionSave_As.setObjectName ("actionSave_As") 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 (MainWindow) self.action_Help = QtGui.QAction (MainWindow). 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.SIGNAL ( self.action_Quit, QtCore.SIGNAL ( "triggered ()"), MainWindow.close) QtCore.QMetaObject.connectSlotsByName (MainWindow) def retranslateUi (self, MainWindow): MainWindow.setWindowTitle (QtGui.QApplication.translate" ("MainWindow") MiEditor", None, QApplicationGui ", None, QApplicationGui" .UnicodeUTF8)) self.menu_File.setTitle (QtGui.QApplication.translate ("MainWindow", "& File", None, QtGui.QApplication.UnicodeUTF8)) self.menu_Help. setTitle ("QtGui.QApplication.translate", "QtGui.QApplication.translate" & Help", Keine, QtGui.QApplication.UnicodeUTF8)) self.action_Nuevo.setText (QtGui.QApplication.translate (" MainWindow "," & New " , 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.QApplication (" 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))Als nächstes müssen wir den Code programmieren, um dem Editor Funktionalität zu geben, jedes Menü und den Textbereich zu instanziieren. Der Code ist ziemlich umfangreich, hier entwickeln wir nur das Interface-Design und seine Konvertierung …
Die Erstellung der grafischen Benutzeroberfläche mit Qt Designer erleichtert das Entwerfen von Anwendungen und ist auch ein großartiges Lernwerkzeug, da der Code von uns abhängt.
Mit Qt Designer können Sie die Eigenschaften jeder Komponente vor der Übersetzung sehen, die Programmierung kann auch ohne die grafische Oberfläche direkt in jedem Texteditor erfolgen, wenn wir die erforderlichen Bibliotheken und deren Eigenschaften kennen.
Python kann auch Anwendungen verarbeiten, die sich mit Datenbanken wie Mysql oder Sqlite verbinden. Durch eine Verbindung und Operationen auf Datenbanken mit Python können wir unserer Anwendung auch eine visuelle Schnittstelle hinzufügen, die mit den grafischen Bibliotheken von . erstellt wurde Qt mit PyQt. Wir werden die Programmierung von grafischen Oberflächen für Benutzer mit Python in einem anderen Tutorial.Hat dir dieses Tutorial gefallen und geholfen?Sie können den Autor belohnen, indem Sie diesen Knopf drücken, um ihm einen positiven Punkt zu geben