📖 الفكرة
QCheckBox هو مربع اختيار (Check Box) يتيح للمستخدم تفعيل خيار أو إلغاءه.
يمكن استخدامه مثلًا لتحديد تفعيل إشعارات، قبول الشروط، أو اختيار أكثر من عنصر.
🖥️ مثال بسيط
برنامج يحتوي على:
- مربع اختيار لتفعيل الإشعارات.
- زر عند الضغط عليه يعرض رسالة هل الخيار مفعل أم لا.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QCheckBox, QPushButton, QLabel
class CheckBoxExample(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("مثال على QCheckBox")
self.setGeometry(300, 200, 400, 200)
# مربع الاختيار
self.checkbox = QCheckBox("تفعيل الإشعارات", self)
self.checkbox.setGeometry(150, 50, 150, 30)
# زر التحقق
self.button = QPushButton("تحقق", self)
self.button.setGeometry(150, 90, 100, 30)
self.button.clicked.connect(self.check_status)
# مكان عرض النتيجة
self.label = QLabel("", self)
self.label.setGeometry(100, 140, 250, 30)
def check_status(self):
if self.checkbox.isChecked():
self.label.setText("✅ الإشعارات مفعلة")
else:
self.label.setText("❌ الإشعارات غير مفعلة")
app = QApplication(sys.argv)
window = CheckBoxExample()
window.show()
sys.exit(app.exec_())
✨ ملاحظات:
- الدالة isChecked() تعيد
Trueإذا كان المربع مفعّلًا. - يمكن إضافة أكثر من CheckBox لاختيار عدة أشياء في نفس الوقت.
📌 التمرين :
جرّب أن تضيف 3 مربعات اختيار مثل:- "اشتراك في القائمة البريدية"
- "تفعيل الوضع الليلي"
- "قبول الشروط والأحكام"
وعند الضغط على زر، اعرض للمستخدم حالة كل خيار (مفعل ✅ أو غير مفعل ❌).
✅ الحل:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout, QComboBox
class ComboBoxExample(QWidget):
def __init__(self):
super().__init__()
# العنوان
self.setWindowTitle("مثال على QComboBox")
self.setGeometry(300, 200, 300, 150)
# عناصر الواجهة
self.label = QLabel("اختر لغتك المفضلة:", self)
self.combo = QComboBox(self)
self.combo.addItem("Python")
self.combo.addItem("C++")
self.combo.addItem("JavaScript")
self.combo.addItem("Java")
self.combo.addItem("Ruby")
# عند تغيير الاختيار
self.combo.currentTextChanged.connect(self.update_label)
# تخطيط
layout = QVBoxLayout()
layout.addWidget(self.label)
layout.addWidget(self.combo)
self.setLayout(layout)
def update_label(self, text):
self.label.setText(f"لقد اخترت: {text}")
# تشغيل البرنامج
if __name__ == "__main__":
app = QApplication(sys.argv)
window = ComboBoxExample()
window.show()
sys.exit(app.exec_())
📌 شرح مبسط:
- أنشأنا QComboBox وأضفنا بعض العناصر (لغات برمجة).
- عند اختيار عنصر من القائمة، يتم تحديث النص في QLabel تلقائيًا.
📝 ملاحظات عن QComboBox (القوائم المنسدلة):
-
إضافة العناصر:
addItem("النص")→ لإضافة عنصر واحد.addItems(["Python", "C++", "Java"])→ لإضافة عدة عناصر دفعة واحدة.
-
الحصول على العنصر المختار:
combo.currentText()→ يرجع النص الحالي.combo.currentIndex()→ يرجع الفهرس (الترتيب الرقمي للعنصر).
-
تغيير أو تعديل عنصر:
combo.setItemText(index, "نص جديد")→ لتغيير نص عنصر معين.
-
حذف عنصر:
combo.removeItem(index)→ لحذف عنصر محدد بالفهرس.
-
عدد العناصر:
combo.count()→ يعطي عدد العناصر الموجودة داخل القائمة.
-
إضافة أيقونة مع عنصر:
from PyQt5.QtGui import QIcon combo.addItem(QIcon("python.png"), "Python")→ هنا يظهر النص مع أيقونة بجانبه.
-
إشارات Signals مهمة:
currentIndexChanged→ ينفذ عند تغيير الفهرس.currentTextChanged→ ينفذ عند تغيير النص.
📌 ملخص سريع:
QComboBoxأداة ممتازة لاختيار خيار واحد من مجموعة.- يمكن التعامل مع النصوص والفهارس بسهولة.
- يمكن إضافة أيقونات لزيادة جمالية القائمة.
- عند تغيير الاختيار يمكن ربط ذلك بأي حدث (تحديث نص، تشغيل وظيفة، إلخ).

