📌 ما هو Scrollbar؟
شريط التمرير يُستخدم عندما يكون هناك محتوى أكثر من مساحة النافذة (مثل نص طويل أو قائمة عناصر كثيرة)، ويمكنك من خلاله التمرير لأعلى/أسفل أو يمين/يسار لعرض كل المحتوى.
✅ مثال عملي: Scrollbar مع Text Widget
import tkinter as tk
# إنشاء نافذة
root = tk.Tk()
root.title("مثال على Scrollbar")
root.geometry("400x300")
# إطار لاحتواء صندوق النص وشريط التمرير
frame = tk.Frame(root)
frame.pack(pady=20)
# إنشاء Text Widget
text_box = tk.Text(frame, width=40, height=10, wrap="word")
text_box.pack(side=tk.LEFT)
# إنشاء شريط تمرير عمودي
scrollbar = tk.Scrollbar(frame, command=text_box.yview)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
# ربط شريط التمرير بصندوق النص
text_box.config(yscrollcommand=scrollbar.set)
# ملء بعض النص لتجربة التمرير
for i in range(30):
text_box.insert(tk.END, f"هذا هو السطر رقم {i+1}\n")
root.mainloop()
✏️ الشرح السريع:
Scrollbar: عنصر يُضاف للتحكم في التمرير.command=text_box.yview: يجعل شريط التمرير يتحكم في صندوق النص.text_box.config(yscrollcommand=scrollbar.set): يجعل صندوق النص يحدّث شريط التمرير حسب الموضع.- استخدمنا
pack(side=RIGHT)وfill=tk.Yلجعل الشريط يغطي المسافة الطولية.
📘 استخدامات أخرى:
يمكنك أيضًا استخدام Scrollbar مع:
ListboxCanvasText
✅ 🧪 التمرين: إنشاء قائمة عناصر طويلة يمكن التمرير فيها
🎯 المطلوب:
- أنشئ نافذة تحتوي على
Listboxبها 50 عنصرًا (من "عنصر 1" إلى "عنصر 50"). - أضف شريط تمرير عمودي (Scrollbar).
- اربط شريط التمرير بالقائمة ليمكنك التمرير عبر العناصر.
✅ 💡 الحل المقترح:
import tkinter as tk
# إنشاء نافذة
root = tk.Tk()
root.title("قائمة مع Scrollbar")
root.geometry("300x250")
# إطار لتجميع القائمة والشريط
frame = tk.Frame(root)
frame.pack(pady=20)
# إنشاء Listbox
listbox = tk.Listbox(frame, height=10, width=30)
listbox.pack(side=tk.LEFT)
# إنشاء Scrollbar وربطه بالقائمة
scrollbar = tk.Scrollbar(frame, orient="vertical", command=listbox.yview)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
# ربط القائمة بشريط التمرير
listbox.config(yscrollcommand=scrollbar.set)
# تعبئة القائمة بـ 50 عنصر
for i in range(1, 51):
listbox.insert(tk.END, f"عنصر {i}")
root.mainloop()
📌 ملاحظات:
orient="vertical"يحدد أن التمرير عمودي.listbox.yviewتجعل الشريط يتحكم في موضع القائمة.yscrollcommand=scrollbar.setتربط موضع القائمة بالشريط.

