الهدف من هذا الدرس هو تعلم كيفية استخدام عنصر Scale
في Tkinter لإنشاء شريط تمرير أفقي أو عمودي لتحديد قيمة عددية.
📌 ما هو Scale؟
هو أداة تسمح للمستخدم باختيار قيمة عددية عن طريق سحب المؤشر على شريط مقياس، مفيد في:
- التحكم في مستوى الصوت 🎧
- تحديد درجة سطوع 🔆
- اختيار مستوى أو نسبة مئوية
🧱 الصيغة الأساسية:
scale = tk.Scale(window, from_=0, to=100)
➕ بعض الخصائص المهمة:
الخاصية | الاستخدام |
---|---|
from_ |
القيمة الصغرى |
to |
القيمة الكبرى |
orient |
الاتجاه (افتراضي: عمودي) |
length |
طول الشريط بالبكسل |
tickinterval |
تكرار عرض القيم على الشريط |
command |
دالة يتم استدعاؤها عند تغيير القيمة |
✅ مثال عملي:
import tkinter as tk
def عرض_القيمة(val):
label.config(text=f"القيمة المختارة: {val}")
window = tk.Tk()
window.title("عنصر Scale")
window.geometry("300x200")
# شريط تمرير أفقي من 0 إلى 100
scale = tk.Scale(window, from_=0, to=100, orient="horizontal", length=200, command=عرض_القيمة)
scale.pack(pady=20)
# لعرض القيمة
label = tk.Label(window, text="القيمة المختارة: 0")
label.pack()
window.mainloop()
✅ ما تعلمته اليوم:
العنصر | الاستخدام |
---|---|
Scale() |
إنشاء شريط تمرير |
orient |
تحديد الاتجاه (أفقي/عمودي) |
get() |
جلب القيمة المختارة (عند الحاجة) |
command |
ربط دالة يتم استدعاؤها تلقائيًا عند تحريك الشريط |
✅ التمرين: "التحكم في سطوع وهمي"
🎯 المطلوب:
- أنشئ نافذة باستخدام Tkinter.
- أضف عنصر
Scale
أفقي (من 0 إلى 100). - أضف
Label
لعرض درجة السطوع الحالية عند تغيير القيمة. - السطوع يُحدَّث تلقائيًا أثناء سحب المؤشر (باستخدام
command
).
🧾 الحل الكامل:
import tkinter as tk
# دالة تحديث السطوع
def تحديث_السطوع(val):
القيمة = int(val)
label.config(text=f"درجة السطوع: {القيمة}%")
# إنشاء النافذة
window = tk.Tk()
window.title("التحكم في السطوع")
window.geometry("350x200")
# عنصر Scale
slider = tk.Scale(window, from_=0, to=100, orient="horizontal",
length=250, command=تحديث_السطوع, label="سطوع")
slider.pack(pady=20)
# عرض القيمة الحالية
label = tk.Label(window, text="درجة السطوع: 0%")
label.pack()
window.mainloop()
💡 ماذا استفدت من هذا التمرين؟
العنصر | الاستخدام |
---|---|
Scale |
لاختيار قيمة عن طريق السحب |
orient |
لجعل الشريط أفقي |
command |
لتحديث القيمة مباشرة أثناء السحب |
Label |
لعرض القيمة بشكل حي |