logo

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:

eksekver script shell
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 -

arrays i java

Python3




modifikationstaster

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

type variabler java

>

>