Как правило, каждый раз, когда вы используете grid
, вы должны указывать по крайней мере одну строку и один столбец в содержащем виджете.Вы сделали это для корневого виджета, но вы не сделали этого для content
или frame
.
Другая проблема в том, что у вас есть только виджеты в строке 0, столбце 0 корневого окна, но вы настроили вес строки и столбца 0-3.
Итак, если вы хотите, чтобы content
заполнил все окно, удалите конфигурацию строк 1 и 2 и столбцов 1 и 2 из корневого окна.
Внутри content
выпомещают виджеты в строки 0-3 и столбцы 0-3.Предполагая, что вы хотите, чтобы содержимое этих строк и столбцов располагалось одинаково, вы должны придать каждой строке и столбцу одинаковый вес.Судя по вашему коду, похоже, что вы, возможно, пытались это сделать, но сделали это в корневом окне, а не в content
.
Следующий пример включает эти изменения.Я также реорганизовал ваш код, чтобы сделать его более читабельным.По моему опыту, лучше всего сгруппировать все команды макета для каждой группы виджетов вместе.Это значительно упрощает визуализацию окончательного макета и позволяет вносить коррективы.
root.columnconfigure(0, weight=1, minsize=80)
root.rowconfigure(0, weight=1, minsize=80)
content = ttk.Frame(root, padding=(3,3,12,12))
content.grid(column=0, row=0, sticky=(N, S, E, W))
content.rowconfigure(0, weight=1, minsize=80)
content.columnconfigure(0, weight=1, minsize=80)
content.columnconfigure(1, weight=1, minsize=80)
content.columnconfigure(2, weight=1, minsize=80)
content.rowconfigure(1, weight=1, minsize=80)
content.rowconfigure(2, weight=1, minsize=80)
frame = ttk.Frame(content, height=500, width=900)
title = ttk.Label(content, text="QRNG")
diceButton = ttk.Button(content, text="Dice")
imageButton = ttk.Button(content, text="Image")
randomNumberButton = ttk.Button(content, text="Random Numbers")
fileButton = ttk.Button(content, text="Random Number File")
otherButton = ttk.Button(content, text="Empty")
exitButton = ttk.Button(content, text="Exit")
frame.grid(column=0, row=0, columnspan=3, rowspan=3, sticky=(N, S, E, W))
title.grid(column=1, row=0, sticky=(N))
diceButton.grid(column=0, row=1, sticky=(W))
imageButton.grid(column=1, row=1, sticky=())
randomNumberButton.grid(column=2, row=1, sticky=(E))
fileButton.grid(column=0, row=2, sticky=(S, W))
otherButton.grid(column=1, row=2, sticky=(S))
exitButton.grid(column=2, row=2, sticky=(S, E))