Python | Introduktion til PyQt5

Python | Introduktion til PyQt5

Der er så mange muligheder fra Python til at udvikle GUI-applikationer, og PyQt5 er en af ​​dem. PyQt5 er cross-platform GUI toolkit, et sæt python-bindinger til Qt v5. Man kan udvikle en interaktiv desktopapplikation med så meget lethed på grund af de værktøjer og enkelhed, som dette bibliotek tilbyder. En GUI-applikation består af Front-end og Back-end. PyQt5 har leveret et værktøj kaldet 'QtDesigner' til at designe front-end by drag and drop metoden, så udviklingen kan blive hurtigere, og man kan give mere tid på back-end ting. Installation: Først skal vi installere PyQt5-biblioteket. Til dette skal du skrive følgende kommando i terminalen eller kommandoprompten:

pip install pyqt5 

Hvis den er installeret med succes, kan man bekræfte den ved at køre koden:

>>>import PyQt5 

PyQt5 giver masser af værktøjer og QtDesigner er et af dem. Kør denne kommando til dette:

pip install PyQt5-tools 

Opret din første app –

Dette er en simpel app med en enkelt knap i vinduet. Når du har klikket på den knap, vises en besked Du klikkede på mig. Lad os begynde .

  • Først og fremmest skal vi finde QtDesigner for at oprette front-end-delen. – QtDesigner er til stede på ‘site-packages/pyqt5_tools’ – For at finde placeringen af ​​site-pakker skal du skrive følgende python-kode ved hjælp af en editor efter eget valg og derefter køre:
>>> import websted>>> site.getsitepackages() 
  • – Kør applikationen med navnet 'designer'.
  • Et vindue åbnes som vist på figuren: vælg indstillingen 'Dialog uden knap' og klik på 'Opret'
  • I venstre side af designeren vil der være forskellige widgets, som kan trækkes og slippes i vores vindue i henhold til vores krav.
  • Find og træk-og-slip 'Push Button' og 'Label'.
  • Skift teksten inde i widgets ved at højreklikke på den og vælge 'Skift almindelig tekst'. Hold etikettens tekst tom.
  • Vi har lavet vores frontend-layout, bare gem det på din ønskede placering. Husk, denne fil vil have .ui som filtypenavn.
  • Vi skal konvertere .ui-filen til .py-fil for at få widgetternes python-form og vedhæfte nødvendige begivenhedslyttere til dem.

Konvertering af .ui-fil til .py-fil:

  • Til dette skal vi gå til sitepackages bibliotek i terminal eller kommandoprompt og køre kommandoen som vist nedenfor. At få placeringen af ​​sitepackages er nævnt tidligere.

>>> cd C:Users……ProgramsPythonPython36-32libsite-pakker [Placering af sitepackages]>>> pyuic5 C:Users……FILENAME .ui[Nøjagtig placering af .ui-fil] -o C:Users…….FILENAME.py [Placering, hvor .py-filen skal placeres]

  • Til sidst vil vi tilføje signaler og slot i python-koden for at gøre den fuldt funktionel.
widget.signal.connect(slot) 
  • EN signal udsendes af widgets efter forekomsten af ​​en bestemt slags begivenhed som et klik, dobbeltklik osv. A slot er enhver kaldbar funktion, som vil udføre en handling efter forekomsten af ​​en hændelse.
  • Kør appen, og klik på knappen.

Nedenfor er koden -

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_())>