با سلام بهنام صباغی هستم با اموزش gui با کتابخانه tkinter این قسمت scrollbar
خب احتمالا تا حالا به این مشکل خوردید که مثلا متنی که توی text نمایش دادید خیلی بزرگ بوده و در نتیجه تمام متن داخل text قابل نمایش نبوده (text منظورم ابزار text هستش) اگر توی برنامه هایی مثل ورد نگاه کرده باشید برای حل این مشکل ازیک ابزار کنار صفحه استفاده میکنند که یه حالت کشویی مانند داره و حرکت میکنه بعضی وقتا افقیه و به راست و چپ حرکت میکنه و بعضی وقتا عمودیه و به بالا و پایین حرکت میکنه حالا میخوام همین ابزار رو یادتون بدم طریقه ی ساختش رو در زیر اوردم

sb=ttk.scrollbar(root,orient=VERTICAL,command=text.yview)
خب کد مینویسم تا دقیق متوجه بشید
#**********************************CODE************************************
from tkinter import *
from tkinter import ttk

root=Tk()

text= Text(root,width=40,height=10,wrap="word")
text.grid(row=0,column=0)

sb=ttk.Scrollbar(root,orient=VERTICAL,command=text.yview)
sb.grid(row=0,column=1,sticky='ns')
       
text.config(yscrollcommand=sb.set)

#*****************************************************************************
خب دوستان اول یه تکست درست کردم و بعد یک اسکرول بار درست کردم و حالتش (orient) رو عمودی (VERTICAL) گذاشتم و در اخر command اون رو برابر text.yview گذاشتم که باعث میشه وصل بشه به y تکستمون و اون رو جابجا کنه ولی اگر تا همینجا مینوشتم و به همین بسنده میکردم میتونستم بالا و پایین ببرمش ولی نمیفهمیدم کجای تکست هستم برای این که طول به اسکرولبار فهمونده بشه
text.config(yscrollcommand=sb.set)
رو نوشتم دقت کنید اگر افقی باشه هرکجا y داریم میشه x و بجای VERTICAL هم باید بنویسیم HORIZONTAL اگر درست نوشته باشم اگرم نه که توی درس های قبلی یه بار این دوتا رو گفتم بخونید یاد بگیرید در زیر یک لیست مینویسم از ابزار هایی که یتونیم در طول y اونها رو جابجا کنیم و براشون اسکرولبار تعریف کنیم
1 - text
2 - treeview
3- canvas
و لیست زیر هم ابزار هایی هستند که از x اسکرول پشتیبانی میکنند
1 - text
2 - treeview
3- canvas
4 - entry
5 - spinbox
6 - combobox
کد زیر رو ببینید داره موقعیت scroll ها رو بجای width و height تعیین میکنه
canvas=Canvas(root,scrollregion(0,0,640,480)
دقت کنید این کد بالا رو توی یه برنامه جدید بزنید و ایمپورت ها رو هم یادتون نره کد زیر رو ببینید
#*****************************CODE*****************************************************
from tkinter import *
from tkinter import ttk

root=Tk()

canvas=Canvas(root,scrollregion=(0,0,640,480),bg='white')
xscroll = ttk.Scrollbar(root,orient=HORIZONTAL,command=canvas.xview)
yscroll = ttk.Scrollbar(root,orient=VERTICAL,command=canvas.yview)

canvas.config(xscrollcommand=xscroll.set, yscrollcommand=yscroll.set)
canvas.grid(row=0,column=0)
xscroll.grid(row=2,column=0,sticky='ew')
yscroll.grid(row=1,column=1,sticky='ns')

def canvas_click(event):
    x=event.x
    y=event.y
    canvas.create_oval((x-5,y-5,x+5 , y+5),fill='green')

canvas.bind('<1>',canvas_click)

#******************************************************************************************'
حالا هر کجای canvas که کلیک کنی یه دایره ی ریز اونجا میشه ولی اگر اسکرول ها رو جابجا کنیم دیگه اونجایی که کلیک میکنیم نمیکشه چون از اول کنویس حساب میکنه برای حل این مشکل
 x=event.x
    y=event.y
رو به
x= canvas.canvasx(event.x)
y= canvas.canvasy(event.y)


یعنی کد کاملتون میشه
#************************************CODE**************************************
from tkinter import *
from tkinter import ttk

root=Tk()

canvas=Canvas(root,scrollregion=(0,0,640,480),bg='white')
xscroll = ttk.Scrollbar(root,orient=HORIZONTAL,command=canvas.xview)
yscroll = ttk.Scrollbar(root,orient=VERTICAL,command=canvas.yview)

canvas.config(xscrollcommand=xscroll.set, yscrollcommand=yscroll.set)
canvas.grid(row=0,column=0)
xscroll.grid(row=2,column=0,sticky='ew')
yscroll.grid(row=1,column=1,sticky='ns')

def canvas_click(event):
    x= canvas.canvasx(event.x)
    y= canvas.canvasy(event.y)


    canvas.create_oval((x-5,y-5,x+5 , y+5),fill='green')

canvas.bind('<1>',canvas_click)

#********************************************************************************