Conținut curs
Python Avansat
Despre lecție

Obiective

În această lecție, veți învăța:

  1. Bazele programării de interfețe grafice (GUI) cu Python și biblioteca PyQt
  2. Crearea de ferestre și gestionarea evenimentelor în PyQt
  3. Utilizarea de widget-uri comune, cum ar fi etichete, butoane și casete de text
  4. Aranjarea widget-urilor într-o fereastră folosind gestionari de layout
  5. Utilizarea stilurilor și a stilizării în aplicațiile PyQt

1. Bazele programării GUI cu Python și PyQt

PyQt este un set de legături Python pentru biblioteca Qt, care este o bibliotecă populară și puternică pentru crearea de aplicații desktop și mobile. PyQt este disponibil în două versiuni majore: PyQt4 și PyQt5. În această lecție, ne vom concentra pe PyQt5, dar majoritatea conceptelor și a codului prezentate aici se aplică și versiunii PyQt4.

Pentru a începe să utilizați PyQt5, instalați biblioteca folosind pip și importați PyQt5.QtWidgets în programul dvs. Python:

bash
pip install PyQt5
python
from PyQt5.QtWidgets import QApplication, QWidget

2. Crearea de ferestre și gestionarea evenimentelor

2.1. Crearea unei ferestre principale

Pentru a crea o fereastră principală în PyQt, creați o instanță a clasei QApplication și o instanță a clasei QWidget:

python
import sys
from PyQt5.QtWidgets import QApplication, QWidget

app = QApplication(sys.argv)
window = QWidget()
window.show()
sys.exit(app.exec_())

app.exec_() este o funcție care pornește bucla de evenimente care procesează și răspunde la evenimente, cum ar fi clicurile pe butoane sau apăsările de taste.

2.2. Gestionarea evenimentelor

Pentru a răspunde la evenimentele generate de widget-uri, cum ar fi apăsarea unui buton, utilizați metoda clicked.connect() a widget-ului și atribuiți o funcție care va fi apelată atunci când se produce evenimentul. De exemplu:

python
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton

def on_button_click():
    print("Am apăsat butonul")

app = QApplication(sys.argv)
window = QWidget()

button = QPushButton("Apasă-mă", window)
button.clicked.connect(on_button_click)
button.show()

window.show()
sys.exit(app.exec_())

3. Utilizarea widget-urilor comune

3.1. Etichete (QLabel)

Etichetele sunt widget-uri folosite pentru a afișa text sau imagini. Pentru a crea o etichetă, importați clasa QLabel și creați o instanță a acesteia:

python
from PyQt5.QtWidgets import QLabel

label = QLabel("Aceasta este o etichetă", window)
label.show()

3.2. Butoane (QPushButton)

Butoanele sunt widget-uri care pot fi apăsate pentru a declanșa o acțiune. Pentru a crea un buton, importați clasa QPushButton și creați o instanță a acesteia:

python
from PyQt5.QtWidgets import QPushButton

button = QPushButton("Apasă-mă", window)
button.clicked.connect(on_button_click)
button.show()

3.3. Casete de text (QLineEdit)

Casetele de text sunt widget-uri care permit utilizatorilor să introducă text. Pentru a crea o casetă de text, importați clasa QLineEdit și creați o instanță a acesteia:

python
from PyQt5.QtWidgets import QLineEdit

entry = QLineEdit(window)
entry.show()

Pentru a obține sau a seta textul dintr-o casetă de text, utilizați metodele text() și setText():

python
text = entry.text()
entry.setText("Acestaeste un text nou")

4. Aranjarea widget-urilor într-o fereastră folosind gestionari de layout

4.1. Layout-uri verticale (QVBoxLayout)

Gestionarul de layout vertical QVBoxLayout aranjează widget-urile într-o coloană verticală. Pentru a utiliza un layout vertical, importați clasa QVBoxLayout și adăugați widget-uri la acesta:

python
from PyQt5.QtWidgets import QVBoxLayout

layout = QVBoxLayout()

layout.addWidget(label)
layout.addWidget(button)
layout.addWidget(entry)

window.setLayout(layout)

4.2. Layout-uri orizontale (QHBoxLayout)

Gestionarul de layout orizontal QHBoxLayout aranjează widget-urile într-un rând orizontal. Pentru a utiliza un layout orizontal, importați clasa QHBoxLayout și adăugați widget-uri la acesta:

python
from PyQt5.QtWidgets import QHBoxLayout

layout = QHBoxLayout()

layout.addWidget(label)
layout.addWidget(button)
layout.addWidget(entry)

window.setLayout(layout)

4.3. Layout-uri grilă (QGridLayout)

Gestionarul de layout grilă QGridLayout vă permite să aranjați widget-urile într-un tabel, specificând rândurile și coloanele în care trebuie să fie plasate. Pentru a utiliza un layout grilă, importați clasa QGridLayout și adăugați widget-uri la acesta:

python
from PyQt5.QtWidgets import QGridLayout

layout = QGridLayout()

layout.addWidget(label, 0, 0)
layout.addWidget(button, 1, 0)
layout.addWidget(entry, 2, 0)

window.setLayout(layout)

5. Utilizarea stilurilor și a stilizării în aplicațiile PyQt

PyQt permite stilizarea aplicațiilor prin intermediul fișierelor de stil Qt (QSS), care sunt similare cu CSS. Pentru a aplica un stil unei aplicații, creați un șir de caractere care conține stilurile QSS și utilizați metoda setStyleSheet() a obiectului QApplication:

python
qss = """
    QWidget {
        background-color: #f0f0f0;
    }
    QLabel {
        font-size: 16px;
    }
    QPushButton {
        background-color: #0078d7;
        color: white;
        font-size: 16px;
        padding: 10px;
        border: none;
    }
    QPushButton:hover {
        background-color: #005999;
    }
    QLineEdit {
        font-size: 16px;
        padding: 10px;
        border: 1px solid #ccc;
    }
"""

app.setStyleSheet(qss)

Concluzie

În această lecție, ați învățat cum să utilizați biblioteca PyQt pentru a crea aplicații desktop cu Python. Ați explorat crearea de ferestre, gestionarea evenimentelor, utilizarea widget-urilor comune, aranjarea widget-urilor într-o fereastră folosind gestionari de layout și aplicarea stilurilor în aplicațiile PyQt. Aceste cunoștințe vă vor permite să creați aplicații desktop cu interfețe grafice personalizate, care îmbunătățesc experiența utilizatorului și facilitează interacțiunea cu programele dvs. Python.