Obiective
În această lecție, veți învăța:
- Bazele programării de interfețe grafice (GUI) cu Python și biblioteca PyQt
- Crearea de ferestre și gestionarea evenimentelor în PyQt
- Utilizarea de widget-uri comune, cum ar fi etichete, butoane și casete de text
- Aranjarea widget-urilor într-o fereastră folosind gestionari de layout
- 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:
pip install PyQt5
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:
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:
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:
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:
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:
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():
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:
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:
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:
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:
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.