Pitone | Introduzione a PyQt5

Pitone | Introduzione a PyQt5

Ci sono così tante opzioni fornite da Python per sviluppare un'applicazione GUI e PyQt5 è una di queste. PyQt5 è un toolkit GUI multipiattaforma, un set di collegamenti Python per Qt v5. È possibile sviluppare un'applicazione desktop interattiva con tanta facilità grazie agli strumenti e alla semplicità forniti da questa libreria. Un'applicazione GUI è composta da front-end e back-end. PyQt5 ha fornito uno strumento chiamato 'QtDesigner' per progettare il front-end tramite il metodo drag and drop in modo che lo sviluppo possa diventare più veloce e si possa dedicare più tempo alle cose di back-end. Installazione: Innanzitutto, dobbiamo installare la libreria PyQt5. Per fare ciò, digita il seguente comando nel terminale o nel prompt dei comandi:

pip install pyqt5 

Se installato correttamente è possibile verificarlo eseguendo il codice:

>>>importa PyQt5 

PyQt5 fornisce molti strumenti e QtDesigner è uno di questi. Per questo esegui questo comando:

pip install PyQt5-tools 

Crea la tua prima app –

Questa è una semplice app con un solo pulsante nella finestra. Dopo aver fatto clic su quel pulsante verrà visualizzato il messaggio Hai fatto clic su di me. Iniziamo .

  • Prima di tutto dobbiamo trovare QtDesigner per creare la parte front-end. – QtDesigner è presente in ‘site-packages/pyqt5_tools’ – Per trovare la posizione dei pacchetti del sito scrivi il seguente codice Python utilizzando qualsiasi editor di tua scelta e quindi esegui:
>>> importa sito>>> site.getsitepackages() 
  • – Eseguire l'applicazione denominata 'designer'.
  • Si aprirà una finestra come mostrato in figura: seleziona l'opzione 'Dialogo senza pulsante' e fai clic su 'Crea'
  • Sul lato sinistro del designer ci saranno vari widget che possono essere trascinati e rilasciati nella nostra finestra in base alle nostre esigenze.
  • Trova e trascina 'Pulsante' ed 'Etichetta'.
  • Modifica il testo all'interno dei widget facendo clic con il pulsante destro del mouse e selezionando 'Cambia testo semplice'. Mantieni vuoto il testo dell'etichetta.
  • Abbiamo creato il nostro layout front-end, salvalo nella posizione desiderata. Ricorda, questo file avrà .ui come estensione.
  • Dobbiamo convertire il file .ui in file .py per ottenere il formato Python dei widget e associarvi i listener di eventi necessari.

Conversione del file .ui in file .py:

  • Per questo dobbiamo andare alla directory sitepackages nel terminale o nel prompt dei comandi ed eseguire il comando come mostrato di seguito. Come ottenere la posizione dei pacchetti del sito è stato menzionato in precedenza.

>>> cd C:Users……ProgrammiPythonPython36-32libsite-packages [Posizione dei sitepackages]>>> pyuic5 C:Users……FILENAME .ui[Posizione esatta del file .ui] -o C:Users…….FILENAME.py [Posizione in cui vuoi inserire il file .py]

  • Infine aggiungeremo segnali e inseriremo il codice Python per renderlo completamente funzionale.
widget.signal.connect(slot) 
  • UN segnale viene emesso dai widget dopo il verificarsi di un certo tipo di evento come un clic, doppio clic, ecc. A fessura è qualsiasi funzione richiamabile che eseguirà alcune azioni dopo il verificarsi di un evento.
  • Eseguire l'app e fare clic sul pulsante.

Di seguito è riportato il codice:

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