مقدمة
PyQt و PySide هما مكتبتان قويتان لإنشاء واجهات مستخدم رسومية متعددة المنصات بلغة بايثون باستخدام إطار عمل Qt. توفران الوصول إلى مجموعة غنية من أدوات Qt: الأدوات التفاعلية، أنظمة الأحداث، الأنماط، الرسوم المتحركة، العمل مع قواعد البيانات، وحتى QML لإنشاء واجهات حديثة.
الفرق الرئيسي بين PyQt و PySide يكمن في الترخيص: PyQt يتطلب ترخيص GPL أو ترخيصًا تجاريًا، بينما PySide (التنفيذ الرسمي من شركة Qt) يُوزع تحت ترخيص LGPL الأكثر مرونة، مما يجعله الخيار المفضل للمشاريع التجارية.
في هذا الدليل الشامل، سنستعرض جميع جوانب العمل مع هاتين المكتبتين: من التثبيت وإنشاء واجهات بسيطة إلى مشاريع متقدمة مع قواعد البيانات، التنسيق، وتجميع التطبيقات الجاهزة.
التثبيت والإعداد
تثبيت PyQt5 و PyQt6
# PyQt5 (إصدار مستقر)
pip install pyqt5 pyqt5-tools
# PyQt6 (إصدار حديث)
pip install pyqt6 pyqt6-tools
تثبيت PySide2 و PySide6
# PySide2 (لـ Qt 5)
pip install pyside2
# PySide6 (الإصدار الموصى به)
pip install pyside6
التحقق من التثبيت
# لـ PyQt5
from PyQt5.QtWidgets import QApplication
print("تم تثبيت PyQt5 بنجاح")
# لـ PySide6
from PySide6.QtWidgets import QApplication
print("تم تثبيت PySide6 بنجاح")
أساسيات إنشاء التطبيقات
نافذة بسيطة مع زر
نسخة PyQt5
from PyQt5.QtWidgets import QApplication, QPushButton, QVBoxLayout, QWidget
import sys
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('أول تطبيق PyQt5 لي')
self.setGeometry(100, 100, 300, 200)
layout = QVBoxLayout()
button = QPushButton('اضغط علي')
button.clicked.connect(self.on_click)
layout.addWidget(button)
self.setLayout(layout)
def on_click(self):
print("تم الضغط على الزر!")
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
نسخة PySide6
from PySide6.QtWidgets import QApplication, QPushButton, QVBoxLayout, QWidget
import sys
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('أول تطبيق PySide6 لي')
self.setGeometry(100, 100, 300, 200)
layout = QVBoxLayout()
button = QPushButton('اضغط علي')
button.clicked.connect(self.on_click)
layout.addWidget(button)
self.setLayout(layout)
def on_click(self):
print("تم الضغط على الزر!")
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
هندسة تطبيقات Qt
المكونات الأساسية
QApplication — هو الكائن المركزي لأي تطبيق Qt. يدير دورة الأحداث، يعالج أحداث النظام، وينسق عمل جميع الأدوات التفاعلية.
QWidget — الفئة الأساسية لجميع عناصر واجهة المستخدم. يمكن أن تحتوي على أدوات تفاعلية أخرى وتعمل كحاوية.
QMainWindow — أداة تفاعلية متخصصة لإنشاء النافذة الرئيسية للتطبيق مع دعم القوائم، أشرطة الأدوات، شريط الحالة، والأداة التفاعلية المركزية.
QDialog — فئة لإنشاء نوافذ الحوار، بما في ذلك الحوارات الشرطية وغير الشرطية.
دورة حياة التطبيق
- إنشاء نسخة من QApplication
- إنشاء وتكوين الأدوات التفاعلية
- عرض النافذة الرئيسية
- بدء دورة الأحداث عبر exec() أو exec_()
- إنهاء التطبيق