إنشاء واجهات رسومية باستخدام مكتبة PyQt في Python

تمت الكتابة بواسطة: عبد الحكيم

تارخ آخر تحديث: 11 مارس 2025

محتوى المقال

إنشاء واجهات رسومية باستخدام مكتبة PyQt في Python

تُعتبر مكتبة PyQt واحدة من أشهر المكتبات لإنشاء واجهات المستخدم الرسومية (GUI) في Python. توفر PyQt أدوات قوية ومتعددة لإنشاء تطبيقات متطورة بمرونة عالية. في هذا المقال، سنقوم بشرح كيفية استخدام PyQt لإنشاء واجهات رسومية في Python، مع تقديم أمثلة توضيحية لكل خطوة.

ما هي مكتبة PyQt؟

PyQt هي مجموعة من الربطيات (bindings) التي تسمح بربط مكتبة Qt، وهي مكتبة GUI مكتوبة بلغة C++، مع لغة Python. تتيح PyQt للمبرمجين استخدام مكونات Qt لبناء تطبيقات رسومية كاملة بلغة Python.

لماذا تستخدم PyQt؟

  • توفر PyQt أدوات شاملة لبناء تطبيقات رسومية معقدة ومتكاملة.
  • المكتبة مدعومة بشكل كبير من قبل المجتمع، مما يجعل من السهل العثور على موارد ودروس.
  • تتكامل بشكل ممتاز مع Python وتتيح الاستفادة من الإمكانيات الكاملة للغة.

البدء مع PyQt

قبل أن نبدأ في كتابة الكود، تأكد من تثبيت مكتبة PyQt. يمكنك تثبيتها باستخدام pip:

$ pip install pyqt5

إنشاء نافذة رئيسية بسيطة

لنبدأ بإنشاء نافذة بسيطة كأول خطوة في تطوير واجهة رسومية باستخدام PyQt. الكود التالي يوضح كيفية إنشاء نافذة رئيسية:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("نافذة رئيسية")
        self.setGeometry(100, 100, 600, 400)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

في هذا المثال، قمنا بإنشاء نافذة رئيسية بسيطة باستخدام QMainWindow. يمكن تخصيص حجم النافذة وموقعها باستخدام الدالة setGeometry.

إضافة عناصر واجهة المستخدم

يمكنك إضافة العديد من عناصر واجهة المستخدم مثل الأزرار، الحقول النصية، والقوائم إلى النافذة. سنضيف الآن زرًا ونصًا توضيحيًا:

from PyQt5.QtWidgets import QPushButton, QLabel

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("تطبيق PyQt")
        self.setGeometry(100, 100, 600, 400)

        self.label = QLabel("مرحبا بكم في PyQt!", self)
        self.label.move(50, 50)

        self.button = QPushButton("اضغط هنا", self)
        self.button.move(50, 100)

في هذا المثال، قمنا بإضافة QLabel لإظهار نص، وQPushButton لإضافة زر. يمكنك تحريك العناصر باستخدام الدالة move.

التفاعل مع العناصر

لجعل التطبيق تفاعليًا، نحتاج إلى ربط العناصر مع وظائف معينة. على سبيل المثال، عندما يضغط المستخدم على الزر، نريد تغيير النص المعروض:

from PyQt5.QtCore import Qt

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("تطبيق PyQt")
        self.setGeometry(100, 100, 600, 400)

        self.label = QLabel("مرحبا بكم في PyQt!", self)
        self.label.move(50, 50)

        self.button = QPushButton("اضغط هنا", self)
        self.button.move(50, 100)
        self.button.clicked.connect(self.change_text)

    def change_text(self):
        self.label.setText("تم تغيير النص!")

قمنا هنا بربط إشارة clicked للزر بالدالة change_text التي تغير النص المعروض على الملصق.

تصميم واجهات معقدة باستخدام QGridLayout

لإدارة التخطيطات المعقدة، يوفر PyQt أدوات مثل QGridLayout. هذه الأداة تساعدك على تنظيم عناصر الواجهة في شبكة.

from PyQt5.QtWidgets import QWidget, QGridLayout

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("تخطيط Grid")
        self.setGeometry(100, 100, 600, 400)

        widget = QWidget()
        layout = QGridLayout()

        layout.addWidget(QLabel("تسمية 1"), 0, 0)
        layout.addWidget(QLabel("تسمية 2"), 0, 1)
        layout.addWidget(QPushButton("زر"), 1, 0, 1, 2)

        widget.setLayout(layout)
        self.setCentralWidget(widget)

في هذا المثال، قمنا بتطبيق QGridLayout لتنظيم تسميات وأزرار داخل شبكة.

الخلاصة

تقدم مكتبة PyQt مجموعة شاملة من الأدوات لبناء واجهات رسومية متقدمة في Python. سواء كنت ترغب في إنشاء نوافذ بسيطة أو تطبيقات معقدة، توفر PyQt الإمكانيات التي تحتاجها. يمكن توسيع وتطوير الواجهات بسهولة باستخدام مكونات متقدمة مثل QGridLayout وتخصيص العناصر المختلفة لتلبية احتياجات التطبيقات المختلفة.

طور مهاراتك: مقالات يجب قراءتها في البرمجة