Python | Einführung in PyQt5
Es gibt so viele Optionen, die Python zum Entwickeln von GUI-Anwendungen bietet, und PyQt5 ist eine davon. PyQt5 ist ein plattformübergreifendes GUI-Toolkit, eine Reihe von Python-Bindungen für Qt v5. Aufgrund der Tools und der Einfachheit, die diese Bibliothek bietet, kann man ganz einfach eine interaktive Desktop-Anwendung entwickeln. Eine GUI-Anwendung besteht aus Front-End und Back-End. PyQt5 hat ein Tool namens „QtDesigner“ bereitgestellt, um das Front-End per Drag-and-Drop-Methode zu entwerfen, sodass die Entwicklung schneller erfolgen kann und man mehr Zeit für Back-End-Sachen aufwenden kann. Installation: Zuerst müssen wir die PyQt5-Bibliothek installieren. Geben Sie dazu den folgenden Befehl in das Terminal oder die Eingabeaufforderung ein:
pip install pyqt5
Bei erfolgreicher Installation kann man dies überprüfen, indem man den folgenden Code ausführt:
>>>PyQt5 importieren
PyQt5 bietet viele Tools und QtDesigner ist eines davon. Führen Sie dazu diesen Befehl aus:
pip install PyQt5-tools
Erstellen Sie Ihre erste App –
Dies ist eine einfache App mit einer einzigen Schaltfläche im Fenster. Nachdem Sie auf diese Schaltfläche geklickt haben, erscheint die Meldung „Sie haben auf mich geklickt“. Lasst uns beginnen .
- Zuerst müssen wir finden QtDesigner um den Front-End-Teil zu erstellen. – QtDesigner ist unter „site-packages/pyqt5_tools“ vorhanden – Um den Speicherort von Site-Paketen zu finden, schreiben Sie den folgenden Python-Code mit einem beliebigen Editor Ihrer Wahl und führen Sie ihn dann aus:
>>> Site importieren>>> site.getsitepackages()
- – Führen Sie die Anwendung mit dem Namen „Designer“ aus.
- Es öffnet sich ein Fenster wie in der Abbildung gezeigt:
Wählen Sie die Option „Dialog ohne Schaltfläche“ und klicken Sie auf „Erstellen“. - Auf der linken Seite des Designers befinden sich verschiedene Widgets, die je nach Bedarf per Drag & Drop in unser Fenster gezogen werden können.
- Suchen Sie nach „Push Button“ und „Label“ und ziehen Sie sie per Drag-and-Drop.
- Ändern Sie den Text in den Widgets, indem Sie mit der rechten Maustaste darauf klicken und „Nur-Text ändern“ auswählen. Lassen Sie den Text des Etiketts leer.
- Wir haben unser Frontend-Layout erstellt. Speichern Sie es einfach an Ihrem gewünschten Ort. Denken Sie daran, dass diese Datei die Erweiterung .ui hat.
- Wir müssen die .ui-Datei in eine .py-Datei konvertieren, um die Python-Form der Widgets zu erhalten und ihnen die erforderlichen Ereignis-Listener hinzuzufügen.
Konvertieren einer .ui-Datei in eine .py-Datei:
- Dazu müssen wir im Terminal oder in der Eingabeaufforderung zum Sitepackages-Verzeichnis gehen und den Befehl wie unten gezeigt ausführen. Das Abrufen des Speicherorts von Sitepackages wurde bereits erwähnt.
>>> cd C:Benutzer……ProgrammePythonPython36-32libsite-packages [Speicherort der Sitepackages]>>> pyuic5 C:Benutzer……DATEINAME .ui[Genauer Speicherort der .ui-Datei] -o C:Benutzer…….FILENAME.py [Speicherort, an dem die .py-Datei abgelegt werden soll]
- Abschließend werden wir Signale hinzufügen und den Python-Code einfügen, um ihn voll funktionsfähig zu machen.
widget.signal.connect(slot)
- A Signal wird von Widgets nach dem Auftreten einer bestimmten Art von Ereignis wie einem Klick, Doppelklick usw. ausgegeben. A Slot ist eine aufrufbare Funktion, die nach dem Eintreten eines Ereignisses eine Aktion ausführt.
- Führen Sie die App aus und klicken Sie auf die Schaltfläche.
Unten ist der Code –
Python3
import> sys> from> PyQt5> import> QtCore, QtGui, QtWidgets> class> Ui_Dialog(> object> ):> > def> setupUi(> self> , Dialog):> > Dialog.setObjectName('Dialog')> > Dialog.resize(> 400> ,> 300> )> > self> .pushButton> => QtWidgets.QPushButton(Dialog)> > self> .pushButton.setGeometry(QtCore.QRect(> 150> ,> 70> ,> 93> ,> 28> ))> > self> .label> => QtWidgets.QLabel(Dialog)> > self> .label.setGeometry(QtCore.QRect(> 130> ,> 149> ,> 151> ,> 31> ))> > self> .label.setText('')> > self> .retranslateUi(Dialog)> > QtCore.QMetaObject.connectSlotsByName(Dialog)> > > # adding signal and slot> > self> .pushButton.clicked.connect(> self> .showmsg)> > def> retranslateUi(> self> , Dialog):> > _translate> => QtCore.QCoreApplication.translate> > Dialog.setWindowTitle(_translate('Dialog', 'Dialog'))> > self> .pushButton.setText(_translate('Dialog', 'Click'))> > > def> showmsg(> self> ):> > # slot> > self> .label.setText('You clicked me')> if> __name__> => => '__main__':> > app> => QtWidgets.QApplication(sys.argv)> > MainWindow> => QtWidgets.QMainWindow()> > ui> => Ui_Dialog()> > ui.setupUi(MainWindow)> > MainWindow.show()> > sys.exit(app.exec_())> |
Wählen Sie die Option „Dialog ohne Schaltfläche“ und klicken Sie auf „Erstellen“.