Python | Inleiding tot PyQt5
Er zijn zoveel opties die Python biedt om een GUI-applicatie te ontwikkelen en PyQt5 is daar een van. PyQt5 is een platformonafhankelijke GUI-toolkit, een set Python-bindingen voor Qt v5. Dankzij de tools en eenvoud die deze bibliotheek biedt, kan men met zoveel gemak een interactieve desktopapplicatie ontwikkelen. Een GUI-applicatie bestaat uit Front-end en Back-end. PyQt5 heeft een tool geleverd genaamd ‘QtDesigner’ om de front-end te ontwerpen door middel van slepen en neerzetten, zodat de ontwikkeling sneller kan gaan en men meer tijd kan besteden aan back-end-zaken. Installatie: Eerst moeten we de PyQt5-bibliotheek installeren. Typ hiervoor de volgende opdracht in de terminal of opdrachtprompt:
pip install pyqt5
Indien succesvol geïnstalleerd, kan men het verifiëren door de code uit te voeren:
>>>importeer PyQt5
PyQt5 biedt veel tools en QtDesigner is daar een van. Voer hiervoor deze opdracht uit:
pip install PyQt5-tools
Maak uw eerste app –
Dit is een eenvoudige app met één knop in het venster. Nadat u op die knop hebt geklikt, verschijnt er een bericht: U heeft op mij geklikt. Laten we beginnen .
- Allereerst moeten we vinden QtDesigner om het front-endgedeelte te maken. – QtDesigner is aanwezig op ‘site-packages/pyqt5_tools’ – Om de locatie van site-pakketten te vinden, schrijft u de volgende Python-code met behulp van een editor naar keuze en voert u deze vervolgens uit:
>>> site importeren>>> site.getsitepackages()
- – Voer de applicatie uit met de naam ‘designer’.
- Er wordt een venster geopend zoals weergegeven in de afbeelding:
selecteer de optie ‘Dialoog zonder knop’ en klik op ‘Maken’ - Aan de linkerkant van de ontwerper bevinden zich verschillende widgets die naar wens in ons venster kunnen worden gesleept en neergezet.
- Zoek ‘Push Button’ en ‘Label’ en sleep het daar neer.
- Wijzig de tekst in de widgets door er met de rechtermuisknop op te klikken en 'Platte tekst wijzigen' te selecteren. Houd de tekst van het label blanco.
- We hebben onze front-end-indeling gemaakt. Sla deze op de gewenste locatie op. Houd er rekening mee dat dit bestand de extensie .ui heeft.
- We moeten het .ui-bestand converteren naar .py-bestand om de python-vorm van de widgets te krijgen en de nodige gebeurtenislisteners eraan te koppelen.
Een .ui-bestand naar een .py-bestand converteren:
- Hiervoor moeten we naar de map sitepackages in de terminal of opdrachtprompt gaan en de opdracht uitvoeren zoals hieronder weergegeven. Het verkrijgen van de locatie van sitepakketten is eerder vermeld.
>>> cd C:Gebruikers……ProgramsPythonPython36-32libsite-packages [Locatie van sitepakketten]>>> pyuic5 C:Gebruikers……FILENAME .ui[Exacte locatie van .ui-bestand] -o C:Users…….FILENAME.py [Locatie waar u het .py-bestand wilt plaatsen]
- Ten slotte zullen we signalen toevoegen en de Python-code invoegen om deze volledig functioneel te maken.
widget.signal.connect(slot)
- A signaal wordt door widgets uitgezonden na het optreden van een bepaald soort gebeurtenis, zoals een klik, dubbelklik, enz. A sleuf is elke aanroepbare functie die een actie zal uitvoeren na het optreden van een gebeurtenis.
- Start de app en klik op de knop.
Hieronder staat de 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_())> |
selecteer de optie ‘Dialoog zonder knop’ en klik op ‘Maken’