logo

Python | Introduktion till PyQt5

Det finns så många alternativ som Python tillhandahåller för att utveckla GUI-applikationer och PyQt5 är en av dem. PyQt5 är plattformsoberoende GUI-verktygssats, en uppsättning pythonbindningar för Qt v5. Man kan utveckla en interaktiv skrivbordsapplikation med så mycket lätthet på grund av verktygen och enkelheten som tillhandahålls av detta bibliotek. En GUI-applikation består av Front-end och Back-end. PyQt5 har tillhandahållit ett verktyg som heter 'QtDesigner' för att designa front-end genom att dra och släpp-metoden så att utvecklingen kan bli snabbare och man kan ge mer tid på back-end-grejer. Installation: Först måste vi installera PyQt5-biblioteket. För detta, skriv följande kommando i terminalen eller kommandotolken:

pip install pyqt5>

Om installerat framgångsrikt kan man verifiera det genom att köra koden:



>>>importera PyQt5>

PyQt5 tillhandahåller massor av verktyg och QtDesigner är ett av dem. Kör detta kommando för detta:

pip install PyQt5-tools>

Skapa din första app –

Detta är en enkel app som har en enda knapp i fönstret. När du har klickat på den knappen visas ett meddelande Du klickade på mig. Låt oss börja .

  • Först och främst måste vi hitta QtDesigner för att skapa front-end-delen. – QtDesigner finns på ‘site-packages/pyqt5_tools’ – För att hitta platsen för site-packages skriv följande python-kod med valfri editor och kör sedan:
>>> importera webbplats>>> site.getsitepackages()>
  • – Kör programmet som heter 'designer'.
  • Ett fönster öppnas som visas i bilden: välj alternativet 'Dialog utan knapp' och klicka på 'Skapa'
  • Till vänster om designern kommer det att finnas olika widgets som kan dras och släppas i vårt fönster enligt våra krav.
  • Hitta och dra och släpp 'Push Button' och 'Etikett'.
  • Ändra texten i widgetarna genom att högerklicka på den och välja 'Ändra vanlig text'. Håll etikettens text tom.
  • Vi har skapat vår front-end-layout, spara den bara på önskad plats. Kom ihåg att den här filen kommer att ha .ui som tillägg.
  • Vi måste konvertera .ui-filen till .py-fil för att få widgetarnas pythonform och bifoga nödvändiga händelseavlyssnare till dem.

Konvertera .ui-fil till .py-fil:

  • För detta måste vi gå till sitepackages-katalogen i terminalen eller kommandotolken och köra kommandot som visas nedan. Att få plats på platspaket har nämnts tidigare.

>>> cd C:Users……ProgramsPythonPython36-32libsite-packages [Plats för webbplatspaket]>>> pyuic5 C:Users……FILENAME .ui[Exakt plats för .ui-filen] -o C:Users…….FILENAME.py [Plats där du vill placera .py-filen]



  • Slutligen kommer vi att lägga till signaler och plats i pythonkoden för att göra den fullt fungerande.
widget.signal.connect(slot)>
  • A signal sänds ut av widgetar efter förekomsten av en viss typ av händelse som ett klick, dubbelklick etc. A spår är en anropsbar funktion som kommer att utföra en åtgärd efter att en händelse inträffat.
  • Kör appen och klicka på knappen.

Nedan är koden -

Python3



försök fånga i java




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

>

>