🎯 الهدف: تعلم استخدام عنصر Spinbox في Tkinter، والذي يسمح للمستخدم باختيار رقم أو قيمة من قائمة محددة مسبقًا عبر أزرار ↑ و ↓.
📌 ما هو Spinbox؟
هو أداة توفر وسيلة سهلة لاختيار الأرقام أو العناصر بالتدرج، بدلاً من كتابة القيم يدويًا. يشبه ComboBox لكن دون عرض القائمة المنسدلة.
🧱 الصيغة الأساسية:
spin = tk.Spinbox(window, from_=الحد_الأدنى, to=الحد_الأقصى)
أهم الخصائص:
| الخاصية | الوصف |
|---|---|
from_ |
القيمة الابتدائية |
to |
القيمة النهائية |
increment |
مقدار التغيير في كل نقرة |
values |
تحديد قائمة ثابتة من القيم |
command |
دالة تنفذ عند تغيير القيمة |
✅ مثال عملي بسيط:
import tkinter as tk
def عرض_العمر():
العمر = spin.get()
label.config(text=f"📅 عمرك هو: {العمر} سنة")
# النافذة
window = tk.Tk()
window.title("Spinbox مثال")
window.geometry("300x180")
# Spinbox لاختيار العمر
spin = tk.Spinbox(window, from_=1, to=100)
spin.pack(pady=15)
# زر لعرض العمر
tk.Button(window, text="عرض العمر", command=عرض_العمر).pack()
# تسمية لعرض النتيجة
label = tk.Label(window, text="اختر عمرك")
label.pack(pady=10)
window.mainloop()
📌 ملاحظات هامة:
- يمكنك استخدام
values=("نعم", "لا", "ربما")لعرض قائمة مخصصة. - القيمة المختارة يمكن الوصول إليها باستخدام
.get().
📦 ملخص سريع:
| الخاصية | الغرض |
|---|---|
Spinbox |
اختيار قيمة عددية أو مخصصة |
from_, to |
لتحديد المدى العددي |
increment |
لضبط مقدار الزيادة أو النقصان |
values |
لتحديد قائمة مخصصة من القيم |
command |
تنفذ عند تغيير القيمة |
✅ التمرين: "اختيار عدد التذاكر"
🎯 المطلوب:
- أنشئ نافذة تحتوي على
Spinboxيسمح للمستخدم باختيار عدد التذاكر (من 1 إلى 10). - أضف زرًا بعنوان "احجز الآن".
- عند الضغط على الزر، تظهر رسالة تحتوي على عدد التذاكر المختار.
- إذا تم اختيار الرقم 1، تعرض رسالة مختلفة.
🧾 الحل الكامل:
import tkinter as tk
def احجز():
العدد = int(spin.get())
if العدد == 1:
label.config(text="✅ تم حجز تذكرة واحدة.")
else:
label.config(text=f"✅ تم حجز {العدد} تذاكر.")
# إنشاء النافذة
window = tk.Tk()
window.title("حجز التذاكر")
window.geometry("300x200")
# العنوان
tk.Label(window, text="اختر عدد التذاكر:", font=("Arial", 12)).pack(pady=10)
# Spinbox لاختيار عدد التذاكر
spin = tk.Spinbox(window, from_=1, to=10)
spin.pack(pady=5)
# زر الحجز
tk.Button(window, text="احجز الآن", command=احجز).pack(pady=10)
# لعرض النتيجة
label = tk.Label(window, text="")
label.pack(pady=10)
window.mainloop()
💡 ماذا تتعلم من هذا التمرين؟
| العنصر | الفائدة |
|---|---|
Spinbox |
تحديد قيمة عددية ضمن نطاق معين |
.get() |
جلب القيمة التي اختارها المستخدم |
command |
تنفيذ فعل معين عند الضغط على الزر |
if |
اتخاذ قرار بناءً على القيمة المختارة |

