تُعدّ خانات الاختيار (Checkbuttons) عنصر واجهة مستخدم أساسيًا في Tkinter، حيث تُتيح للمستخدمين طريقة مباشرة لتحديد أو إلغاء تحديد الخيارات. يستكشف هذا البرنامج التعليمي جوانب مختلفة لاستخدام خانات الاختيار، من التنفيذ الأساسي إلى التقنيات المتقدمة مثل ربط دالة الاستدعاء وتعديل الحالات الافتراضية.
جدول المحتويات:
- مثال أساسي لخانة الاختيار
- التحديد والإلغاء البرمجي
- تبديل حالة خانة الاختيار
- ربط دوال الاستدعاء
- ضبط قيمة خانة الاختيار الافتراضية
- استكشاف الخيارات الإضافية
1. مثال أساسي لخانة الاختيار
لنبدأ بمثال بسيط يُظهر خانة اختيار واحدة:
import tkinter as tk
root = tk.Tk()
root.title("Checkbutton Example")
var = tk.BooleanVar()
checkbutton = tk.Checkbutton(root, text="I agree to the terms", variable=var)
checkbutton.pack()
root.mainloop()
هذا يُنشئ نافذة تحتوي على خانة اختيار مُسمّاة “أوافق على الشروط”. يُخزّن BooleanVar()
حالة خانة الاختيار (True للمُحدّد، False لغير المُحدّد). يُضع pack()
خانة الاختيار في النافذة.
2. التحديد والإلغاء البرمجي
يمكنك التحكم مباشرة في حالة خانة الاختيار باستخدام متغيرها المُرتبط:
import tkinter as tk
root = tk.Tk()
root.title("Checkbutton Control")
var = tk.BooleanVar()
checkbutton = tk.Checkbutton(root, text="Select me!", variable=var)
checkbutton.pack()
def select():
var.set(True)
def deselect():
var.set(False)
select_button = tk.Button(root, text="Select", command=select)
select_button.pack()
deselect_button = tk.Button(root, text="Deselect", command=deselect)
deselect_button.pack()
root.mainloop()
يضيف هذا المثال أزرارًا لتحديد وإلغاء تحديد خانة الاختيار برمجيًا.
3. تبديل حالة خانة الاختيار
تتضمن حالة الاستخدام المتكررة تبديل حالة خانة الاختيار:
import tkinter as tk
root = tk.Tk()
root.title("Checkbutton Toggle")
var = tk.BooleanVar()
checkbutton = tk.Checkbutton(root, text="Toggle me!", variable=var, command=lambda: print(f"Checkbutton state: {var.get()}"))
checkbutton.pack()
root.mainloop()
يُفعّل خيار command
دالة (هنا، طباعة الحالة الحالية) في كل مرة يتم فيها تبديل خانة الاختيار.
4. ربط دوال الاستدعاء
يمكن إجراء إجراءات أكثر تعقيدًا باستخدام دالة استدعاء مخصصة:
import tkinter as tk
root = tk.Tk()
root.title("Checkbutton Callback")
def callback():
if var.get():
print("Checkbutton selected!")
else:
print("Checkbutton deselected!")
var = tk.BooleanVar()
checkbutton = tk.Checkbutton(root, text="Trigger Callback!", variable=var, command=callback)
checkbutton.pack()
root.mainloop()
يُظهر هذا المثال دالة استدعاء تطبع رسالة بناءً على حالة خانة الاختيار.
5. ضبط قيمة خانة الاختيار الافتراضية
يمكن ضبط الحالة الأولية لخانة الاختيار:
import tkinter as tk
root = tk.Tk()
root.title("Checkbutton Default Value")
var = tk.BooleanVar(value=True) # مُحدّد في البداية
checkbutton = tk.Checkbutton(root, text="Default Selected!", variable=var)
checkbutton.pack()
root.mainloop()
بتعيين BooleanVar
إلى True
، تبدأ خانة الاختيار في الحالة المُحدّدة.
6. استكشاف الخيارات الإضافية
تُقدّم عنصر واجهة مستخدم خانة الاختيار Checkbutton
في Tkinter العديد من الخيارات الأخرى للتخصيص، بما في ذلك:
onvalue
وoffvalue
: تخصيص القيم المُرتبطة بالحالات المُحدّدة وغير المُحدّدة (القيمة الافتراضية هي 1 و 0، على التوالي).variable
: بينما استخدمناBooleanVar
، يمكنك استخدام أنواع متغيرات أخرى لإدارة حالات أكثر تعقيدًا.indicatoron
: يتحكم فيما إذا كانت خانة الاختيار تعرض مؤشرًا مرئيًا (مربع).selectcolor
: تغيير لون المؤشر المُحدّد.offrelief
وonrelief
: التحكم في المظهر ثلاثي الأبعاد للزر في الحالات المُحدّدة وغير المُحدّدة.
يرجى الرجوع إلى وثائق Tkinter الرسمية للحصول على قائمة كاملة بالخيارات واستخداماتها.