🧭Checkbutton و Radiobutton في Tkinter
🧱 ما الفرق بينهما؟
العنصر | الوصف |
---|---|
✅ Checkbutton | مربع اختيار يمكنك تفعيله أو تعطيله (يمكن اختيار أكثر من واحد). |
🔘 Radiobutton | زر دائري يسمح باختيار خيار واحد فقط من مجموعة. |
✅ أولًا: Checkbutton
📌 مثال بسيط:
import tkinter as tk
root = tk.Tk()
root.title("مثال على Checkbutton")
# متغير لتخزين حالة الـ Checkbutton
var1 = tk.IntVar()
check = tk.Checkbutton(root, text="أوافق على الشروط", variable=var1)
check.pack(pady=10)
root.mainloop()
🧾 شرح سريع:
IntVar()
يُستخدم لتخزين القيمة (1 = مفعّل، 0 = غير مفعّل).variable=var1
: ربط الـ Checkbutton بهذا المتغير.
🔘 ثانيًا: Radiobutton
📌 مثال على مجموعة خيارات:
import tkinter as tk
root = tk.Tk()
root.title("مثال على Radiobutton")
# متغير مشترك للمجموعة
selected = tk.StringVar(value="None")
tk.Label(root, text="اختر لونك المفضل:").pack()
radio1 = tk.Radiobutton(root, text="أحمر", variable=selected, value="Red")
radio2 = tk.Radiobutton(root, text="أزرق", variable=selected, value="Blue")
radio3 = tk.Radiobutton(root, text="أخضر", variable=selected, value="Green")
radio1.pack()
radio2.pack()
radio3.pack()
root.mainloop()
📌 كيف يعمل؟
- جميع الـ Radiobuttons مرتبطة بنفس المتغير
selected
. - عند اختيار أحدها، يتم تخزين قيمته تلقائيًا في المتغير.
🎯 استخدام عملي: إظهار القيمة المختارة
مثال صغير يجمع بين Checkbutton و Radiobutton ويطبع النتائج:
import tkinter as tk
def عرض_النتائج():
print("هل وافق؟", "نعم" if check_var.get() else "لا")
print("اللون المفضل:", color_var.get())
root = tk.Tk()
root.title("تجربة")
check_var = tk.IntVar()
color_var = tk.StringVar(value="Red")
check = tk.Checkbutton(root, text="أوافق على الشروط", variable=check_var)
check.pack()
tk.Label(root, text="اختر لونك المفضل:").pack()
tk.Radiobutton(root, text="أحمر", variable=color_var, value="Red").pack()
tk.Radiobutton(root, text="أزرق", variable=color_var, value="Blue").pack()
tk.Radiobutton(root, text="أخضر", variable=color_var, value="Green").pack()
tk.Button(root, text="عرض النتائج", command=عرض_النتائج).pack(pady=10)
root.mainloop()
🎯 تمرين تطبيقي: نموذج تسجيل لدورة
📝 المطلوب:
إنشاء نموذج يحتوي على:
- الاسم (Entry)
- اختيار الجنس (ذكر / أنثى) باستخدام Radiobutton.
- اختيار الدورات التي يرغب المستخدم في التسجيل فيها (Python – Web – Data Science) باستخدام Checkbutton.
- زر "تسجيل" عند الضغط عليه يظهر ملخص المعلومات المدخلة.
✅ الحل:
import tkinter as tk
def سجل_البيانات():
الاسم = entry_name.get()
الجنس = var_gender.get()
الدورات = []
if var_python.get():
الدورات.append("Python")
if var_web.get():
الدورات.append("Web")
if var_data.get():
الدورات.append("Data Science")
النتيجة = f"👤 الاسم: {الاسم}\n"
النتيجة += f"🧬 الجنس: {الجنس}\n"
النتيجة += f"📚 الدورات المسجلة: {', '.join(الدورات) if الدورات else 'لا شيء'}"
result_label.config(text=النتيجة)
# نافذة التطبيق
root = tk.Tk()
root.title("نموذج تسجيل دورة")
root.geometry("300x400")
# الاسم
tk.Label(root, text="الاسم الكامل:").pack()
entry_name = tk.Entry(root)
entry_name.pack(pady=5)
# الجنس
tk.Label(root, text="الجنس:").pack()
var_gender = tk.StringVar(value="ذكر")
tk.Radiobutton(root, text="ذكر", variable=var_gender, value="ذكر").pack()
tk.Radiobutton(root, text="أنثى", variable=var_gender, value="أنثى").pack()
# الدورات
tk.Label(root, text="اختر الدورات:").pack()
var_python = tk.IntVar()
var_web = tk.IntVar()
var_data = tk.IntVar()
tk.Checkbutton(root, text="Python", variable=var_python).pack()
tk.Checkbutton(root, text="Web Development", variable=var_web).pack()
tk.Checkbutton(root, text="Data Science", variable=var_data).pack()
# زر التسجيل
tk.Button(root, text="تسجيل", command=سجل_البيانات).pack(pady=10)
# عرض النتيجة
result_label = tk.Label(root, text="", justify="left")
result_label.pack(pady=10)
root.mainloop()
✅ مخرجات البرنامج:
عند إدخال الاسم وتحديد الجنس والدورات ثم الضغط على زر "تسجيل"، تظهر المعلومات المدخلة بشكل منسق.
0 تعليقات