الدرس السابع: استخدام عناصر Checkbutton و Radiobutton في Tkinter

🧭Checkbutton و Radiobutton في Tkinter

الدرس السابع: استخدام عناصر 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 تعليقات