استخدام Checkboxes و Radio Buttons في PyQt Designer.
في هذا الدرس سنتعلم:
- كيفية إضافة مربعات اختيار (QCheckBox).
- كيفية إضافة أزرار التحديد (QRadioButton).
- كيفية ربط هذه العناصر بالأحداث في بايثون لقراءة قيمها والتفاعل معها.
📌 1. إنشاء الواجهة في Qt Designer
1- افتح Qt Designer وأنشئ نافذة جديدة (Main Window).2- أضف العناصر التالية:
- QLabel بعنوان: "اختر اهتماماتك:"
- 3 Checkboxes بعناوين: "برمجة" – "تصميم" – "شبكات".
- QLabel بعنوان: "اختر الجنس:"
- 2 Radio Buttons: "ذكر" – "أنثى".
- زر QPushButton بعنوان "عرض النتائج".
- QLabel فارغة لعرض النتيجة (نسميها:
labelResult
).
3- احفظ الملف باسم:
checkbox_radiobutton.ui
📌 2. كتابة الكود
import sys
from PyQt5 import QtWidgets, uic
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
uic.loadUi("checkbox_radiobutton.ui", self)
# ربط الزر مع الدالة
self.pushButton.clicked.connect(self.show_result)
def show_result(self):
# جمع الاهتمامات من الـ Checkboxes
interests = []
if self.checkBox.isChecked():
interests.append("برمجة")
if self.checkBox_2.isChecked():
interests.append("تصميم")
if self.checkBox_3.isChecked():
interests.append("شبكات")
# تحديد الجنس من Radio Buttons
gender = ""
if self.radioButton.isChecked():
gender = "ذكر"
elif self.radioButton_2.isChecked():
gender = "أنثى"
# عرض النتيجة
result_text = f"الاهتمامات: {', '.join(interests) if interests else 'لا شيء'}\nالجنس: {gender if gender else 'غير محدد'}"
self.labelResult.setText(result_text)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
🎯 النتيجة
- عند تشغيل البرنامج وتحديد بعض الـ Checkboxes (مثلاً: برمجة + شبكات) واختيار أحد الـ Radio Buttons (مثلاً: ذكر)، ثم الضغط على زر "عرض النتائج"، ستظهر النتيجة داخل الـ QLabel في الأسفل.
✍️ تمرين لك
قم بإنشاء واجهة تحتوي على:
- 4 Checkboxes تمثل لغات برمجة (Python – Java – C++ – JavaScript).
- 3 Radio Buttons لتمثيل مستوى الخبرة (مبتدئ – متوسط – متقدم).
- زر "إرسال".
- عند الضغط على الزر، يتم عرض النتيجة في QLabel يوضح اللغات المختارة ومستوى الخبرة.
📌 الحل
1. تصميم الواجهة في Qt Designer
أنشئ نافذة جديدة (Main Window).أضف:
- 4 Checkboxes بعناوين: Python – Java – C++ – JavaScript.
- 3 Radio Buttons بعناوين: مبتدئ – متوسط – متقدم.
- زر QPushButton بعنوان "إرسال".
- QLabel فارغة لعرض النتيجة (نسميها:
labelResult
).
checkbox_exercise.ui
2. كود بايثون
import sys
from PyQt5 import QtWidgets, uic
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
uic.loadUi("checkbox_exercise.ui", self)
# ربط الزر مع الدالة
self.pushButton.clicked.connect(self.show_result)
def show_result(self):
# جمع اللغات المختارة
languages = []
if self.checkBox.isChecked():
languages.append("Python")
if self.checkBox_2.isChecked():
languages.append("Java")
if self.checkBox_3.isChecked():
languages.append("C++")
if self.checkBox_4.isChecked():
languages.append("JavaScript")
# تحديد مستوى الخبرة
level = ""
if self.radioButton.isChecked():
level = "مبتدئ"
elif self.radioButton_2.isChecked():
level = "متوسط"
elif self.radioButton_3.isChecked():
level = "متقدم"
# تجهيز النص النهائي
if not languages:
lang_text = "لم يتم اختيار أي لغة"
else:
lang_text = "، ".join(languages)
if not level:
level_text = "لم يتم اختيار مستوى"
else:
level_text = level
result_text = f"اللغات المختارة: {lang_text}\nمستوى الخبرة: {level_text}"
self.labelResult.setText(result_text)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
🎯 النتيجة
- عند تشغيل البرنامج، يمكن للمستخدم اختيار لغات برمجة متعددة من الـ Checkboxes.
- يختار مستوى خبرة واحد فقط من الـ Radio Buttons.
- عند الضغط على زر "إرسال"، تظهر النتيجة داخل الـ QLabel.
🔜 في الدرس التاسع سنتعلم كيف نستخدم QComboBox (القائمة المنسدلة) ونربطها بالأحداث.