PyQt5 Tutorials

إتقان تخطيطات الصناديق في PyQt5: QVBoxLayout و QHBoxLayout

Spread the love

يوفر PyQt5 مديري تخطيطات قوية لترتيب الأدوات بكفاءة. تعتبر تخطيطات الصناديق، وتحديدًا QVBoxLayout (عمودي) و QHBoxLayout (أفقي)، أساسية لإنشاء واجهات مستخدم منظمة. يستكشف هذا البرنامج التعليمي هذه التخطيطات، ويُوضح استخدامها وكيفية التحكم في محاذاة الأدوات.

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

تخطيط الصندوق العمودي (QVBoxLayout)

يرتب QVBoxLayout الأدوات عموديًا، حيث يضعها واحدة فوق الأخرى. هذا مثالي لإنشاء نماذج أو قوائم أو أي سيناريو يتطلب ترتيبًا عموديًا.


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

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("مثال على تخطيط الصندوق العمودي")

layout = QVBoxLayout()
layout.addWidget(QLabel("هذا نص"))
layout.addWidget(QPushButton("انقر هنا!"))
layout.addWidget(QLabel("نص آخر"))

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

يقوم هذا الكود بإنشاء نافذة بتخطيط عمودي يحتوي على نص، وزر، ونص آخر.

تخطيط الصندوق الأفقي (QHBoxLayout)

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


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

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("مثال على تخطيط الصندوق الأفقي")

layout = QHBoxLayout()
layout.addWidget(QLabel("نص 1"))
layout.addWidget(QPushButton("زر 1"))
layout.addWidget(QLabel("نص 2"))

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

يشبه هذا المثال المثال السابق، ولكنه يستخدم QHBoxLayout لترتيب أفقي.

التحكم في محاذاة الأدوات

تتخذ الأدوات في تخطيطات الصناديق بشكل افتراضي محاذاة أعلى/يسار. للتحكم في المحاذاة، استخدم طريقة setAlignment() مع علامات مثل Qt.AlignHCenter (وسط أفقيًا)، Qt.AlignVCenter (وسط عموديًا)، أو مجموعات منها. هذا يركز الأداة داخل المساحة المخصصة لها في التخطيط.


import sys
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QLabel, QPushButton, Qt

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("مثال على محاذاة الأدوات")

layout = QHBoxLayout()
label = QLabel("نص في المنتصف")
layout.addWidget(label)
layout.setAlignment(label, Qt.AlignHCenter | Qt.AlignVCenter)

button = QPushButton("زر")
layout.addWidget(button)

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

يُركز هذا المثال نصًا أفقيًا وعموديًا داخل التخطيط.

تداخل التخطيطات لواجهات المستخدم المعقدة

لواجهات المستخدم الأكثر تعقيدًا، قم بتداخل التخطيطات داخل بعضها البعض. يسمح هذا بترتيبات معقدة وتحكم دقيق في وضع الأدوات.


import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QPushButton

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("مثال على التخطيطات المتداخلة")

mainLayout = QVBoxLayout()

# تخطيط أفقي للجزء العلوي
topLayout = QHBoxLayout()
topLayout.addWidget(QLabel("أعلى يسار"))
topLayout.addWidget(QPushButton("أعلى يمين"))
mainLayout.addLayout(topLayout)

# تخطيط عمودي للجزء السفلي
bottomLayout = QVBoxLayout()
bottomLayout.addWidget(QLabel("أسفل"))
mainLayout.addLayout(bottomLayout)

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

يُوضح هذا المثال تداخل تخطيط أفقي داخل تخطيط عمودي لإنشاء واجهة مستخدم من قسمين.

يوفر هذا البرنامج التعليمي أساسًا لاستخدام تخطيطات الصناديق في PyQt5. استكشف وثائق PyQt5 للحصول على خيارات تخطيط وميزات أكثر تقدمًا لبناء تطبيقات متطورة وسهلة الاستخدام.

اترك تعليقاً

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