PyQt5 Tutorials

إتقان PyQt5 QGridLayout: برنامج تعليمي شامل

Spread the love

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

محتويات الجدول

  1. الاستخدام الأساسي لـ QGridLayout
  2. امتداد خلايا متعددة
  3. التحكم في تمدد الأدوات
  4. تقنيات متقدمة واعتبارات

1. الاستخدام الأساسي لـ QGridLayout

يرتب QGridLayout الأدوات في شبكة من الصفوف والأعمدة. تشغل كل أداة خلية واحدة افتراضيًا. لنبدأ بمثال بسيط:


import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QGridLayout

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("مثال تخطيط الشبكة PyQt5")

layout = QGridLayout()

button1 = QPushButton("زر 1")
button2 = QPushButton("زر 2")
button3 = QPushButton("زر 3")
button4 = QPushButton("زر 4")

layout.addWidget(button1, 0, 0)  # الصف 0، العمود 0
layout.addWidget(button2, 0, 1)  # الصف 0، العمود 1
layout.addWidget(button3, 1, 0)  # الصف 1، العمود 0
layout.addWidget(button4, 1, 1)  # الصف 1، العمود 1

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

هذا ينشئ شبكة 2 × 2 من الأزرار. addWidget(widget, row, column) يضيف أداة إلى الصف والعمود المحددين (بمؤشر صفر).

2. امتداد خلايا متعددة

لجعل أداة تمتد عبر صفوف أو أعمدة متعددة، استخدم addWidget(widget, row, column, rowspan, colspan). rowspan و colspan يحددان عدد الصفوف والأعمدة التي تشغلها الأداة.


import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QGridLayout, QLabel

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("مثال امتداد تخطيط الشبكة PyQt5")

layout = QGridLayout()

label = QLabel("هذا الملصق يمتد على عمودين")
button1 = QPushButton("زر 1")
button2 = QPushButton("زر 2")

layout.addWidget(label, 0, 0, 1, 2)  # يمتد على عمودين
layout.addWidget(button1, 1, 0)
layout.addWidget(button2, 1, 1)

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

هنا، يمتد الملصق على عمودين.

3. التحكم في تمدد الأدوات

افتراضيًا، يتم تحديد حجم الأدوات إلى الحد الأدنى لحجمها. للتحكم في كيفية توسيع الأدوات لملء المساحة المتاحة، استخدم setColumnStretch(column, stretch) و setRowStretch(row, stretch). يعني عامل تمدد أعلى أن الأداة ستشغل حصة أكبر نسبيًا من المساحة المتاحة.


import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QGridLayout

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("مثال تمدد تخطيط الشبكة PyQt5")

layout = QGridLayout()

button1 = QPushButton("زر 1")
button2 = QPushButton("زر 2")

layout.addWidget(button1, 0, 0)
layout.addWidget(button2, 0, 1)

layout.setColumnStretch(1, 2)  # العمود 1 يمتد ضعف العمود 0

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

سيأخذ button2 الآن ضعف المساحة الأفقية لـ button1.

4. تقنيات متقدمة واعتبارات

للتخطيطات الأكثر تعقيدًا، ضع في اعتبارك استخدام:

  • addLayout(): تضمين تخطيطات أخرى داخل QGridLayout لهياكل متداخلة.
  • المحاذاة: استخدم setAlignment() للتحكم في محاذاة الأدوات داخل خلاياها.
  • التباعد: ضبط التباعد بين الصفوف والأعمدة باستخدام setVerticalSpacing() و setHorizontalSpacing().
  • الهوامش: التحكم في الهوامش حول الشبكة بأكملها باستخدام setContentsMargins().

إتقان هذه التقنيات سيمكنك من إنشاء واجهات PyQt5 متطورة وقابلة للتكيف للغاية.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *