Вы можете поместить Frame
в ячейку и использовать pack()
или grid()
, чтобы поместить кнопки в этот кадр
import tkinter as tk
root = tk.Tk()
f0 = tk.Frame(root)
f0.grid(row=0, column=1)
bA = tk.Button(f0, text='Button A')
bA.pack(side='left')
bB = tk.Button(f0, text='Button B')
bB.pack(side='left')
bB = tk.Button(f0, text='Button C')
bB.pack(side='left')
f1 = tk.Frame(root)
f1.grid(row=1, column=0)
b1 = tk.Button(f1, text='Button 1')
b1.pack()
b2 = tk.Button(f1, text='Button 2')
b2.pack()
b3 = tk.Button(f1, text='Button 3')
b3.pack()
t1 = tk.Text(root)
t1.grid(row=1, column=1)
root.mainloop()

Или вы можете использовать rowspan
, чтобы виджет (т. Е. Text
) использовал много строк, и тогда другие виджеты будут использовать меньше места - но все равно будет некоторое пространство вокруг кнопок. Если вы также используете rowconfig(... ,weight=1)
, то последняя строка будет использовать все свободное пространство.
У меня 3 строки с кнопками, но я использую rowspan=4
, поэтому Text
также будет использовать пустую строку после кнопок. И тогда я использую root.rowconfigure(4, weight=1)
, поэтому эта пустая строка будет использовать все пространство emtpy в столбце.
import tkinter as tk
root = tk.Tk()
bA = tk.Button(root, text='Button A')
bA.grid(row=0, column=1)
bB = tk.Button(root, text='Button B')
bB.grid(row=0, column=2)
bC = tk.Button(root, text='Button C')
bC.grid(row=0, column=3)
b1 = tk.Button(root, text='Button 1')
b1.grid(row=1, column=0)
b2 = tk.Button(root, text='Button 2')
b2.grid(row=2, column=0)
b3 = tk.Button(root, text='Button 3')
b3.grid(row=3, column=0)
t1 = tk.Text(root)
t1.grid(row=1, column=1, rowspan=4, columnspan=4)
root.rowconfigure(4, weight=1) # resize
root.columnconfigure(4, weight=1) # resize
root.mainloop()
