Scrollbar

عنصر Scrollbar یک کنترل کننده لغزنده فراهم می‌آورد که به منظور ایجاد اسکرول عمودی برای عناصری مانند ListBox ،Text و Canvas استفاده می‌شود. همچنین می‌توانید برای اسکرول بار افقی برای عنصر Entry نیز استفاده کنید. نحوه تعریف کردن عنصر Scrollbar به صورت زیر است:

Scrollbar (master, options, ...)

master، بیانگر پنجره والدی است که Scrollbar به آن تعلق خواهد داشت و options، تنظیمات پرکاربرد برای Scrollbar می‌باشند که می‌توانند به صورت زوج‌های کلید/مقدار که با ویرگول از هم جدا می‌شوند، مورد استفاده قرار گیرند. در جدول زیر لیست این تنظیمات آمده است:

تنظیمات شرح
activebackground رنگ لغزنده و پیکان‌ها زمانی که نشانگر ماوس بر روی آنها قرار می‌گیرد.
bd پهنای لبه سه بعدی در اطراف نگه دارنده و همچنین پهنای افکت‌های سه بعدی پیکان‌ها و Slider. مقدار پیش فرض صفر برای نگه دارنده و 2 پیکسل برای پیکان‌ها و Slider است.
bg رنگ لغزنده و پیکان‌ها زمانی که ماوس بر روی آنها قرار ندارد.
command تابعی را هنگام حرکت Scrollbar فراخوانی می کند.
cursor نشانگر ماوس نمایش داده شده، زمانی که ماوس بر روی Scrollbar قرار می‌گیرد.
elementborderwidth پهنای خط اطراف لغزنده و پیکان‌ها. مقدار پیش فرض 1- است
highlightbackground رنگ فوکوس زمانی که Scrollbar دارای فوکوس نیست.
highlightcolor رنگ فوکوس نمایش داده شده، زمانی که Scrollbar دارای فوکوس است.
highlightthickness ضخامت فوکوس نمایش داده شده. مقدار پیش فرض 1 است. با قرار دادن صفر، نمایش فوکوس را خنثی می‌کنید.
jump این گزینه مشخص می‌کند در زمانی که کاربر لغزنده را با ماوس می‌کشد، تابع command به چه صورت فراخوانی شود. در حالت معمول (jump=0) هر جابه جایی کوچک لغزنده منجر به فراخوانی تابع command می‌شود. اگر مقدار این گزینه را به 1 تغییر دهید، تابع command تنها در زمان آزاد کردن دکمه ماوس فراخوانی می‌شود.
orient برای Scrollbar افقی، مقدار این گزینه را HORIZONTAL قرار دهید و برای Scrollbar عمودی، VERTICAL.
repeatdelay مشخص می‌کند چه مدت زمان دکمه Scrollbar باید پایین نگه داشته شود تا لغزنده به طور متوالی در آن جهت شروع به حرکت کند. واحد آن میلی ثانیه و مقدارپیش فرض آن 300 است.
repeatinterval وقفه میان حرکات متوالی
takefocus در حالت عادی می‌توانید با tab فوکوس را به Scrollbar منتقل کنید. با قرار دادن takefocus=0 می‌توانید این رفتار را غیر فعال کنید.
troughcolor رنگ قسمت نگه دارنده
width پهنای Scrollbar (در حالت افقی بعد y و در حالت عمودی بعد x را مشخص می‌کند) پیش فرض 16 است.

 
Scrollbar دارای توابع زیر است :

تابع شرح
()get این تابع دو مقدار (a, b) که بیانگر موقعیت فعلی لغزنده است را، بر می‌گرداند. مقدار a موقعیت چپ یا بالای لغزنده را به ترتیب برای حالت افقی یا عموی مشخص می‌کند. مقدار b موقعیت راست یا پایین را مشخص می‌کند.
set(first, last) برای متصل کردن Scrollbar به عنصری دیگر، دو خاصیت xscrollcommand یا yscrollcommand آن عنصر را با این تابع مقدار دهی کنید. ورودی‌ها این تابع همانند مقادیر بازگشتی تابع get هستند. به عنوان مثال Widget.config(yscrollcommand = scrollbar.set)

مثال زیر را امتحان کنید:

 1: import tkinter
 2: from tkinter import *
 3: 
 4: window = tkinter.Tk()
 5: window.geometry('300x300')
 6: 
 7: scrollbar = Scrollbar(window)
 8: scrollbar.pack( side = RIGHT, fill = Y )
 9: 
10: listbox = Listbox(window, yscrollcommand = scrollbar.set )
11: for line in range(100):
12:    listbox.insert(END, "This is line number " + str(line))
13: 
14: listbox.pack( side = LEFT, expand=1, fill = BOTH )
15: scrollbar.config( command = listbox.yview )
16: 
17: window.mainloop()

هدف اصلی از کد بالا، اختصاص یک Scrollbar به عنصر listBox است. در خطوط 7 و 8 کد بالا یک Scrollbar ایجاد کرده و آن را به سمت راست فرم چسبانده‌ایم و گفته‌ایم که در محور Y همه فرم را پوشش دهد. در خط 10 یک ListBox ایجاد کرده و مقدار خاصیت yscrollcommand را برابر scrollbar.set قرار داده‌ایم. این بدین معنی است که مقدار اسکرول عمودی ListBox برابر مقداری است که دستگیره Scrollbar نشان می‌دهد. در خطوط 12-11 هم با استفاده از یک حلقه for، صد خط را به ListBox اضافه کرده‌ایم تا اسکرول معنا پیدا کند. در خط 15 هم با استفاده از دستور command و اختصاص تابع ()yview به آن گفته‌ایم که با بالا و پایین کردن دستگیره Scrollbar، عنصر ListBox در راستای عمودی قابل اسکرول باشد. پس از اجرای کد بالا، نتیجه‌ای به شکل زیر ایجاد خواهد شد:
scrollbar-in-tkinter-01