با سلام بهنام صباغی هستم با اموزش gui با کتابخانه tkinter این قسمت geometry manager grid
خب این یکی یکم بهتره البته از نظر من توی این یکی از ایندکس برای نمایش استفاده میکنیم صفحه رو به قطعه های کوچیک تقسیم میکنه از سمن بالا چپ شماره ردیف و شماره ستون کد رو ببینید
#**********************CODE***********************

from tkinter import *
from tkinter import ttk

root=Tk()

ttk.Label(root,text='bytton1',background='red').grid(row=0,column=0)

ttk.Label(root,text='bytton1',background='blue').grid(row=1,column=0)

ttk.Label(root,text='bytton1',background='orange').grid(row=0,column=1)

ttk.Label(root,text='bytton1',background='green').grid(row=1,column=1)

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

حالا اگر بخوایم دقیقا زیر هم نباشند و یکم جابجا بشند و از قطعه ی خودشون بیرون بیاند یه راه داره کد زیر رو ببینید

#**********************CODE***********************

from tkinter import *
from tkinter import ttk

root=Tk()

ttk.Label(root,text='bytton1',background='red').grid(row=0,column=2 ,rowspan=2)

ttk.Label(root,text='bytton1',background='blue').grid(row=1,column=0,  columnspan=2)

ttk.Label(root,text='bytton1',background='orange').grid(row=0,column=0)

ttk.Label(root,text='bytton1',background='green').grid(row=0,column=1)

#************************************************
با این الگو میتونیم بذاریمشون زیر همدیگه اجرا کنید خودتون میفهمید و موقعیت رو هم میتونید با جهت های جغرافیایی بهش بدید
ttk.Label(root,text='bytton1',background='green').grid(row=0,column=1,stick ='e')
حالا کد زیر رو اجرا کنید
#**********************CODE***********************

from tkinter import *
from tkinter import ttk

root=Tk()

ttk.Label(root,text='bytton1',background='red').grid(row=0,column=2 ,rowspan=2,stick ='nsew')

ttk.Label(root,text='bytton1',background='blue').grid(row=1,column=0,  columnspan=2,stick ='nsew')

ttk.Label(root,text='bytton1',background='orange').grid(row=0,column=0,stick ='nsew')

ttk.Label(root,text='bytton1',background='green').grid(row=0,column=1,stick ='nsew')

#************************************************
میبینید که با تغییر اندازه تغییر نمیکنند برای این مشکل با توایع rowconfigure و  columnconfigure که متعلق به روت هستند و مشخص کردن وزن برای هرکدوم مشکل رو حل میکنیم مثال زیر رو ببینید
#**********************CODE***********************

from tkinter import *
from tkinter import ttk

root=Tk()
root.rowconfigure(0,weight=1)
root.rowconfigure(1,weight=3)
root.columnconfigure(2,weight=1)
ttk.Label(root,text='bytton1',background='red').grid(row=0,column=2 ,rowspan=2,stick ='nsew')

ttk.Label(root,text='bytton1',background='blue').grid(row=1,column=0,  columnspan=2,stick ='nsew')

ttk.Label(root,text='bytton1',background='orange').grid(row=0,column=0,stick ='nsew')

ttk.Label(root,text='bytton1',background='green').grid(row=0,column=1,stick ='nsew')

#************************************************
کد بالا رو اجرا کنید و پنجره رو تغییر اندازه بدید میبینید که در راستای row ردیف دوم به ازای هر یک پیکسل تغییر اندازه ی ردیف اول سه پیکسل تغییر اندازه میده و هر ردیفی رو که تعریف نکنیم یا ستون فرقی نمیکنه صفر درنظر گرفته میشه
درراستای ستون ها هم سومی رو که یک دادم تغییر میکنه وبقیه صفر هستند
توابع زیر هم مثل همون pack برای grid هم صادقند
1 - grid_slaves()
2 - grid_configure()
3 - grid_info()
4 - grid_forget()
موفق باشید