في هذا الدرس سنتعلم إضافة مربعات اختيار (Checkbuttons) ومربعات تحديد (Radiobuttons).
📌 ما الفرق؟
العنصر | الوظيفة |
---|---|
Checkbutton |
يسمح بتحديد أكثر من خيار (مثل ✅ مربعات متعددة) |
Radiobutton |
يسمح باختيار خيار واحد فقط من عدة خيارات |
🧪 مثال عملي على الاثنين:
✅ الكود:
import tkinter as tk
# نافذة رئيسية
root = tk.Tk()
root.title("Checkbuttons و Radiobuttons")
root.geometry("350x350")
# ====== Checkbuttons ======
tk.Label(root, text="اختر هواياتك:", font=("Arial", 12)).pack()
هواية1 = tk.IntVar()
هواية2 = tk.IntVar()
هواية3 = tk.IntVar()
tk.Checkbutton(root, text="القراءة", variable=هواية1).pack(anchor='w')
tk.Checkbutton(root, text="البرمجة", variable=هواية2).pack(anchor='w')
tk.Checkbutton(root, text="السفر", variable=هواية3).pack(anchor='w')
# ====== Radiobuttons ======
tk.Label(root, text="\nاختر جنسك:", font=("Arial", 12)).pack()
الجنس = tk.StringVar()
الجنس.set("ذكر") # القيمة الافتراضية
tk.Radiobutton(root, text="ذكر", variable=الجنس, value="ذكر").pack(anchor='w')
tk.Radiobutton(root, text="أنثى", variable=الجنس, value="أنثى").pack(anchor='w')
# زر عرض النتائج
def عرض_النتائج():
نتائج = []
if هواية1.get(): نتائج.append("القراءة")
if هواية2.get(): نتائج.append("البرمجة")
if هواية3.get(): نتائج.append("السفر")
النص = f"الهوايات: {', '.join(نتائج)}\nالجنس: {الجنس.get()}"
النتيجة.config(text=النص)
tk.Button(root, text="عرض النتائج", command=عرض_النتائج).pack(pady=10)
# مكان عرض النتيجة
النتيجة = tk.Label(root, text="", font=("Arial", 11), fg="blue")
النتيجة.pack(pady=10)
# تشغيل النافذة
root.mainloop()
🧠 ملاحظات:
IntVar()
تستخدم مع Checkbuttons لمعرفة إن كان الخيار مفعلًا (1) أم لا (0).StringVar()
مع Radiobuttons لتحديد الخيار المختار.anchor='w'
يجعل العناصر مصطفة لليسار.
🎯 التمرين:
أنشئ واجهة تتيح للمستخدم:
- اختيار اللغات البرمجية التي يعرفها من بين: Python, Java, C++
- تحديد مستوى خبرته: مبتدئ، متوسط، متقدم
- عند الضغط على زر "عرض المعلومات"، تُعرض المعلومات المختارة أسفل الزر
✅ الحل:
import tkinter as tk
# إنشاء النافذة
root = tk.Tk()
root.title("استبيان مطور")
root.geometry("350x400")
# ====== Checkbuttons لاختيار اللغات ======
tk.Label(root, text="ما اللغات التي تتقنها؟", font=("Arial", 12)).pack(pady=5)
py_var = tk.IntVar()
java_var = tk.IntVar()
cpp_var = tk.IntVar()
tk.Checkbutton(root, text="Python", variable=py_var).pack(anchor='w')
tk.Checkbutton(root, text="Java", variable=java_var).pack(anchor='w')
tk.Checkbutton(root, text="C++", variable=cpp_var).pack(anchor='w')
# ====== Radiobuttons لتحديد مستوى الخبرة ======
tk.Label(root, text="\nما مستوى خبرتك؟", font=("Arial", 12)).pack(pady=5)
level_var = tk.StringVar()
level_var.set("مبتدئ")
tk.Radiobutton(root, text="مبتدئ", variable=level_var, value="مبتدئ").pack(anchor='w')
tk.Radiobutton(root, text="متوسط", variable=level_var, value="متوسط").pack(anchor='w')
tk.Radiobutton(root, text="متقدم", variable=level_var, value="متقدم").pack(anchor='w')
# ====== زر عرض النتائج ======
def عرض_النتائج():
اللغات = []
if py_var.get(): اللغات.append("Python")
if java_var.get(): اللغات.append("Java")
if cpp_var.get(): اللغات.append("C++")
النتيجة = f"اللغات: {', '.join(اللغات) if اللغات else 'لم يتم اختيار لغة'}\n"
النتيجة += f"المستوى: {level_var.get()}"
النتيجة_label.config(text=النتيجة)
tk.Button(root, text="عرض المعلومات", command=عرض_النتائج).pack(pady=10)
# ====== مكان عرض النتيجة ======
النتيجة_label = tk.Label(root, text="", font=("Arial", 11), fg="green")
النتيجة_label.pack(pady=10)
# تشغيل التطبيق
root.mainloop()
📌 ما ستتعلمه من التمرين:
- الجمع بين مربعات اختيار ومربعات تحديد
- استخدام
IntVar
وStringVar
- عرض القيم المختارة ديناميكيًا