الهدف من هذا الدرس هو تعلم كيفية استخدام عنصر التحكم Spinbox في Tkinter لاختيار قيمة رقمية أو نص من قائمة.
📌 ما هو Spinbox؟
هو عنصر واجهة رسومية يتيح للمستخدم:
- اختيار قيمة من مجموعة محددة مسبقًا.
- عن طريق السحب (السهم لأعلى أو لأسفل) أو كتابة القيمة يدويًا.
🧱 الصيغة الأساسية:
spin = tk.Spinbox(root, from_=0, to=10)
أو:
spin = tk.Spinbox(root, values=("أحمر", "أخضر", "أزرق"))
✅ مثال 1: اختيار رقم
import tkinter as tk
window = tk.Tk()
window.title("Spinbox رقمي")
window.geometry("250x150")
spin = tk.Spinbox(window, from_=1, to=10)
spin.pack(pady=20)
def عرض_القيمة():
print("القيمة المختارة:", spin.get())
tk.Button(window, text="عرض", command=عرض_القيمة).pack()
window.mainloop()
✅ مثال 2: اختيار من قائمة ألوان
import tkinter as tk
window = tk.Tk()
window.title("Spinbox نصي")
window.geometry("250x150")
spin = tk.Spinbox(window, values=("أحمر", "أخضر", "أزرق", "أصفر"))
spin.pack(pady=20)
def عرض_اللون():
print("اللون المختار:", spin.get())
tk.Button(window, text="عرض اللون", command=عرض_اللون).pack()
window.mainloop()
📌 خصائص إضافية:
الخاصية | الاستخدام |
---|---|
from_ |
بداية المجال العددي |
to |
نهاية المجال |
values |
قائمة من القيم (نصوص أو أرقام) |
state |
يمكن أن تكون "readonly" لمنع الكتابة |
✅ التمرين: "اختيار عدد تذاكر الحجز"
🎯 المطلوب:
- أنشئ نافذة تحتوي على Spinbox لاختيار عدد التذاكر (من 1 إلى 10).
- أضف زرًا مكتوبًا عليه "تأكيد الحجز".
- عند الضغط على الزر، تظهر رسالة في الطرفية تحتوي على عدد التذاكر المحجوزة.
🧾 الحل الكامل:
import tkinter as tk
# إنشاء النافذة
window = tk.Tk()
window.title("نموذج حجز تذاكر")
window.geometry("300x200")
# عنوان
tk.Label(window, text="اختر عدد التذاكر:", font=("Arial", 12)).pack(pady=10)
# Spinbox من 1 إلى 10
spin = tk.Spinbox(window, from_=1, to=10, width=5)
spin.pack()
# دالة عند الضغط على الزر
def تأكيد_الحجز():
عدد = spin.get()
print(f"تم حجز {عدد} تذكرة.")
# زر التأكيد
tk.Button(window, text="تأكيد الحجز", command=تأكيد_الحجز).pack(pady=20)
# تشغيل النافذة
window.mainloop()
💡 ما تعلمته من التمرين:
العنصر | الوظيفة |
---|---|
Spinbox |
يتيح اختيار رقم من مجال محدد |
get() |
يستخدم لجلب القيمة الحالية من Spinbox |
Button |
تنفيذ أمر عند الضغط على الزر |
0 تعليقات