Le basi di Pyqt5

Le basi di Pyqt5
Pyqt5 è un modulo Python per lo sviluppo dell'applicazione desktop GUI. È disponibile per più piattaforme come Windows, Mac, Linux, iOS e Android. Python offre diversi moduli che sono, in effetti, capaci di sviluppo della GUI, come Tkinter, Wxpython, Pyside2 e altro ancora. Tuttavia, PYQT5 utilizza più di 1000 classi; In effetti, Pyqt5 è un modulo enorme! Inoltre, PYQT5 include un designer QT, un designer di interfaccia utente grafica, che facilita ulteriormente la creazione di GUI. Può essere utilizzato per creare qualsiasi cosa, dai giocatori dei media ai browser Web. In questo tutorial, impareremo le basi del modulo PYQT5.

Innanzitutto, installiamo pyqt5:

PIP Installa Pyqt5
PIP Installa pyqt5-tools

Passaggio 1: creazione della finestra vuota

Il primo passo nella creazione di qualsiasi cosa è impostare la finestra vuota. La finestra vuota stessa richiede alcune righe di codice, quindi guardiamolo.

da pyqt5 import qtwidgets
da pyqt5.QtWidgets Import Qapplication, QmainWindow
Import sys
da pyqt5 import qtgui
Finestra di classe (Qtwidgets.Qwidget):
def __init __ (self):
super().__dentro__()

Imposta la geometria della finestra usando il metodo setGeometry (), che richiede quattro argomenti: la posizione X iniziale, la posizione Y iniziale (in altre parole, in cui l'angolo in alto a sinistra appare sullo schermo), la larghezza e l'altezza della finestra.

se stesso.Setgeometry (350, 100, 800, 600)

Imposta il titolo della finestra con il metodo setWindowTitle ().

se stesso.setwindowtitle ("pyqt5")

È possibile impostare l'icona usando setWindowicon (). Si noti che l'icona deve essere di 64 pixel per 64 pixel.

se stesso.setwindowicon (Qtgui.Qicon ("Rattle.png "))

Ogni file pyqt5 richiede questa riga successiva che prende sys.argv come argomento.

Applicazione = Qapplication (sys.argv)

Successivamente, crea un'istanza della classe che abbiamo creato sopra.

win = window ()
vincita.spettacolo()

Per uscire dalla finestra premendo il pulsante X, abbiamo bisogno di SYS.uscita (applicazione.Exec ()).

sys.uscita (applicazione.Exec ())

Questo codice creerà una finestra vuota. Il codice nel suo insieme sarebbe così:

da pyqt5 import qtwidgets
da pyqt5.QtWidgets Import Qapplication, QmainWindow
Import sys
da pyqt5 import qtgui
Finestra di classe (Qtwidgets.Qwidget):
def __init __ (self):
super().__dentro__()
se stesso.Setgeometry (350, 100, 800, 600)
se stesso.setwindowtitle ("pyqt5")
se stesso.setwindowicon (Qtgui.Qicon ("Rattle.png "))
Applicazione = Qapplication (sys.argv)
win = window ()
vincita.spettacolo()
sys.uscita (applicazione.Exec ())

Passaggio 2: barra di input

Successivamente, creiamo una barra di input. Una barra di input è un luogo in cui gli utenti possono aggiungere testo che possiamo recuperare. Le barre di input vengono create utilizzando Qwidgets.Qlineedit (). Un ovviamente, impostiamo la sua geometria usando il metodo setGeometry ().

def iniziat (self):
se stesso.input_bar = qtwidgets.Qlineedit (self)
se stesso.input_bar.Setgeometry (150, 250, 500, 40)

Intendiamoci; Devi ancora attivare la funzione nel metodo __init__ come segue:

se stesso.Initui ()

Il codice per intero a questo punto sembrerebbe così:

da pyqt5 import qtwidgets
da pyqt5.QtWidgets Import Qapplication, QmainWindow
Import sys
da pyqt5 import qtgui
Finestra di classe (Qtwidgets.Qwidget):
def __init __ (self):
super().__dentro__()
se stesso.Setgeometry (350, 100, 800, 600)
se stesso.setwindowtitle ("pyqt5")
se stesso.setwindowicon (Qtgui.Qicon ("Rattle.png "))
se stesso.Initui ()
def iniziat (self):
se stesso.input_bar = qtwidgets.Qlineedit (self)
se stesso.input_bar.Setgeometry (150, 250, 500, 40)
Applicazione = Qapplication (sys.argv)
win = window ()
vincita.spettacolo()
sys.uscita (applicazione.Exec ())

Passaggio 3: creazione di pulsanti

Ora, aggiungiamo alcuni pulsanti alla tela vuota. Quindi, scriviamo il codice per il pulsante. Per il pulsante, utilizziamo QtWidgets.Qpushbutton (). Come al solito, possiamo impostare la sua geometria usando il metodo setGeometry ().

se stesso.Button1 = QtWidgets.Qpushbutton ("show", self)
se stesso.Button1.Setgeometry (275, 350, 200, 50)

Imposta l'icona utilizzando il metodo seticon ().

se stesso.Button1.Seticon (Qtgui.Qicon ("Rattle.png "))

Imposta lo stile del testo usando il metodo setStylesHeet (). Puoi cambiare il colore, il po 'di carattere e le dimensioni del carattere, tra gli altri.

se stesso.Button1.SetStylesheet ("Color: Black")
se stesso.Button1.SetStylesheet ("Font-Weight: Bold")
se stesso.Button1.SetStylesheet ("Font-size: 18pt")

Per ottenere il pulsante per fare qualcosa quando viene cliccato, è necessario dire al pulsante che deve attivare una funzione quando viene cliccata. Questo viene fatto usando clic su clic.connect (), dove la funzione attivata viene passata come argomento. Nel mio caso, è:

se stesso.Button1.Clicato.Connetti (Self.Button_Clicked)

Successivamente, definiamo la funzione da chiamare o attivare quando viene premuto il pulsante. Per ora, lo stamperemo semplicemente sulla console.

DEF Button_Clicked (self):
url_value = self.input_bar.testo()
stampa (url_value)

Il codice nel suo insieme ora sarebbe così:

da pyqt5 import qtwidgets
da pyqt5.QtWidgets Import Qapplication, QmainWindow
Import sys
da pyqt5 import qtgui
Finestra di classe (Qtwidgets.Qwidget):
def __init __ (self):
super().__dentro__()
se stesso.Setgeometry (350, 100, 800, 600)
se stesso.setwindowtitle ("pyqt5")
se stesso.setwindowicon (Qtgui.Qicon ("Rattle.png "))
se stesso.Initui ()
def iniziat (self):
se stesso.input_bar = qtwidgets.Qlineedit (self)
se stesso.input_bar.Setgeometry (150, 250, 500, 40)
se stesso.Button1 = QtWidgets.Qpushbutton ("show", self)
se stesso.Button1.Setgeometry (275, 350, 200, 50)
se stesso.Button1.Seticon (Qtgui.Qicon ("Rattle.png "))
se stesso.Button1.SetStylesheet ("Color: Black")
se stesso.Button1.SetStylesheet ("Font-Weight: Bold")
se stesso.Button1.SetStylesheet ("Font-size: 18pt")
se stesso.Button1.Clicato.Connetti (Self.Button_Clicked)
DEF Button_Clicked (self):
url_value = self.input_bar.testo()
stampa (url_value)
Applicazione = Qapplication (sys.argv)
win = window ()
vincita.spettacolo()
sys.uscita (applicazione.Exec ())

Passaggio 4: creazione di etichette

Ora modifichiamo il comando pressione del pulsante usando qlabels. I qlabels vengono utilizzati per aggiungere testo. Aggiungiamo questo a def iniziale (self).

se stesso.Etichetta = QtWidgets.Qlabel (self)

Impostiamo il testo sull'etichetta usando il metodo setText ().

se stesso.etichetta.SetText ("Modifica questo titolo facendo clic sul pulsante")
se stesso.etichetta.SetGeometry (Qtcore.QRECT (200, 80, 500, 100))

Imposta il carattere, le dimensioni e il peso usando il foglio di setStyles ().Imposta il carattere, le dimensioni e il peso usando il foglio di setStyles ().

se stesso.etichetta.SetStylesheet ("Font-Weight: Bold")
se stesso.etichetta.SetStylesheet ("Font-size: 18pt")

E infine, aggiorniamo tutto utilizzando il metodo update ().

se stesso.etichetta.aggiornamento()

Questo crea quanto segue:

Ora possiamo modificare il contenuto nella funzione Button_Clicked ().

DEF Button_Clicked (self):

Possiamo recuperare ciò che l'utente scrive nella barra di testo utilizzando il metodo text ().

url_value = self.input_bar.testo()

Possiamo quindi modificare l'etichetta al momento del clic del pulsante utilizzando il metodo setText () e posizionarli nella posizione giusta utilizzando il metodo setGeometry ().

se stesso.etichetta.setText (url_value)
se stesso.etichetta.SetGeometry (Qtcore.QRECT (200, 80, 500, 100))

Il codice nel suo insieme ora sarebbe così:

da pyqt5 import qtwidgets
da pyqt5.QtWidgets Import Qapplication, QmainWindow
Import sys
da Pyqt5 import qtgui, qtcore
Finestra di classe (Qtwidgets.Qwidget):
def __init __ (self):
super().__dentro__()
se stesso.Setgeometry (350, 100, 800, 600)
se stesso.setwindowtitle ("pyqt5")
se stesso.setwindowicon (Qtgui.Qicon ("Rattle.png "))
se stesso.Initui ()
def iniziat (self):
se stesso.input_bar = qtwidgets.Qlineedit (self)
se stesso.input_bar.Setgeometry (150, 250, 500, 40)
se stesso.Button1 = QtWidgets.Qpushbutton ("show", self)
se stesso.Button1.Setgeometry (275, 350, 200, 50)
se stesso.Button1.Seticon (Qtgui.Qicon ("Rattle.png "))
se stesso.Button1.SetStylesheet ("Color: Black")
se stesso.Button1.SetStylesheet ("Font-Weight: Bold")
se stesso.Button1.SetStylesheet ("Font-size: 18pt")
se stesso.Button1.Clicato.Connetti (Self.Button_Clicked)
se stesso.Etichetta = QtWidgets.Qlabel (self)
se stesso.etichetta.SetText ("Modifica questo titolo facendo clic sul pulsante")
se stesso.etichetta.SetGeometry (Qtcore.QRECT (200, 80, 500, 100))
se stesso.etichetta.SetStylesheet ("Font-Weight: Bold")
se stesso.etichetta.SetStylesheet ("Font-size: 18pt")
se stesso.etichetta.aggiornamento()
DEF Button_Clicked (self):
url_value = self.input_bar.testo()
se stesso.etichetta.setText (url_value)
se stesso.etichetta.SetGeometry (Qtcore.QRECT (200, 80, 500, 100))
Applicazione = Qapplication (sys.argv)
win = window ()
vincita.spettacolo()
sys.uscita (applicazione.Exec ())

Passaggio 5: QvBoxLayout e Qhboxlayout

IO noT Aggiungi un QVBoxLayout o Qhboxlayout qui, ma puoi se vuoi. Qhboxlayout disporrebbe tutto in uno schema orizzontale e QvBoxLayout lo organizzerà verticalmente. Se si utilizza QHBoxLayout o QVBoxLayout, è necessario omettere il metodo setGeometry ().

Se volessi aggiungerlo, scriverai quanto segue in def initi (self). Per prima cosa iniziali il layout usando QVBoxLayout ():

se stesso.Design = QvBoxLayout ()

Quindi aggiungi i widget che desideri al suo interno usando il metodo AddWidget ().

se stesso.progetto.AddWidget (sé.etichetta)
se stesso.progetto.AddWidget (sé.input_bar)
se stesso.progetto.AddWidget (sé.Button1)

Si imposta il layout usando setLayout (), che prende la variabile inizializzata come argomento.

se stesso.SetLayout (self.progetto)

Non ne ho bisogno qui perché ho impostato tutto con setGeometry (), quindi lo ometterò nel mio codice. Tuttavia, se lo desideri nel tuo codice, l'intero codice sembrerebbe così:

da pyqt5 import qtwidgets
da pyqt5.QtWidgets Import Qapplication, QmainWindow, Qhboxlayout, QvBoxLayout
Import sys
da Pyqt5 import qtgui, qtcore
Finestra di classe (Qtwidgets.Qwidget):
def __init __ (self):
super().__dentro__()
#se stesso.Setgeometry (350, 100, 800, 600)
se stesso.setwindowtitle ("pyqt5")
se stesso.setwindowicon (Qtgui.Qicon ("Rattle.png "))
se stesso.Initui ()
def iniziat (self):
se stesso.input_bar = qtwidgets.Qlineedit (self)
#se stesso.input_bar.Setgeometry (150, 250, 500, 40)
se stesso.Button1 = QtWidgets.Qpushbutton ("show", self)
#se stesso.Button1.Setgeometry (275, 350, 200, 50)
se stesso.Button1.Seticon (Qtgui.Qicon ("Rattle.png "))
se stesso.Button1.SetStylesheet ("Color: Black")
se stesso.Button1.SetStylesheet ("Font-Weight: Bold")
se stesso.Button1.SetStylesheet ("Font-size: 18pt")
se stesso.Button1.Clicato.Connetti (Self.Button_Clicked)
se stesso.Etichetta = QtWidgets.Qlabel (self)
se stesso.etichetta.SetText ("Modifica questo titolo facendo clic sul pulsante")
#se stesso.etichetta.SetGeometry (Qtcore.QRECT (200, 80, 500, 100))
se stesso.etichetta.SetStylesheet ("Font-Weight: Bold")
se stesso.etichetta.SetStylesheet ("Font-size: 18pt")
se stesso.etichetta.aggiornamento()
se stesso.Design = QvBoxLayout ()
se stesso.progetto.AddWidget (sé.etichetta)
se stesso.progetto.AddWidget (sé.input_bar)
se stesso.progetto.AddWidget (sé.Button1)
se stesso.SetLayout (self.progetto)
DEF Button_Clicked (self):
url_value = self.input_bar.testo()
se stesso.etichetta.setText (url_value)
se stesso.etichetta.SetGeometry (Qtcore.QRECT (200, 80, 500, 100))
Applicazione = Qapplication (sys.argv)
win = window ()
vincita.spettacolo()
sys.uscita (applicazione.Exec ())

Passaggio 6: Qt Designer

Ciò che è ancora meglio con Pyqt5 è che viene fornito con il suo designer. Un designer è una console in cui è possibile progettare la GUI che desideri e il programma ruppe il codice Python per questo. Qt Designer è disponibile nel pacchetto PYQT5-Tools e quindi deve essere installato per funzionare. Sul designer QT, puoi posizionare pulsanti, cursori, ecc.... una volta che li posiziona, puoi salvare il file come un .File dell'interfaccia utente.

Una volta salvato il file come un .file dell'interfaccia utente, è ancora necessario convertirlo in a .file py in modo che Pycharm possa visualizzarlo. Per fare ciò, apri un terminale o un CMD e digita:

pyuic5 -x saved_file_name.ui -o pithon_file.py

Ho salvato il mio file come saved_file_name.UI. Il terminale ronrà un file Python e lo chiamerà quello che hai chiesto. Puoi quindi aprire il .file py in pycharm e aggiungi la logica ad esso.

Ricorda che sebbene possiamo usare il designer per progettare il layout della GUI, dobbiamo comunque aggiungere logica al codice, che viene eseguito esclusivamente tramite il codice Python e non il designer. Sfortunatamente, il designer QT non aggiunge logica al codice!

In questo tutorial, abbiamo appreso le basi di PYQT5 e come utilizzare QT Designer. Abbiamo appreso che potremmo creare schermate vuote, aggiungere pulsanti utilizzando QPushButton, aggiungere barre di input usando QlineEdit, aggiungere testo usando Qlabels e disporre tutto usando QVBoxLayout/Qhboxlayout. In effetti, Pyqt5 è un modulo molto grande utilizzato per creare una varietà di applicazioni desktop GUI. Sebbene ci siano molti moduli per le applicazioni GUI a Python, la maggior parte delle persone sceglie Pyqt5 perché offre un'enorme scelta di design e un designer per facilitare le attività. In effetti, Pyqt5 è un modulo che vale la pena imparare!

Codice felice!