По умолчанию элементы центрируются в ячейке сетки без необходимости что-либо делать. Проблема в том, что столбец, содержащий ячейку, достаточно широк для самого большого элемента в этом столбце, который в данном случае является заголовком. Таким образом, он центрирован в своей ячейке, но ячейка имеет такую же ширину, как и метка, поэтому она не выглядит центрированной.
Если вы хотите, чтобы заголовок охватывал ширину окна (а не ячейки), вам нужно использовать параметр columnspan
, чтобы он проходил по всем столбцам, которые вы используете .
Например:
l1 = Label(window, ...)
l1.grid(row=0, columnspan=2)
Однако он по-прежнему не будет отображаться по центру, поскольку столбцы 0 и 1 будут иметь размер не более их самых больших элементов, что оставляет некоторое дополнительное пространство в графическом интерфейсе, поскольку вы явно устанавливаете ширину окна. Вам нужно сделать одну из двух вещей: сделать окно меньше (или позволить Tkinter определить лучший размер для вас, что обычно является правильным решением), или указать, что столбец 0 или 1 (или оба) расширится, чтобы заполнить любые дополнительные пространство.
В первом случае просто удалите вызов на geometry
. Во-вторых, используйте columnconfigure
в корне, чтобы один или оба столбца имели «вес», что означает, что они будут расширяться, занимая дополнительное пространство.
window.grid_columnconfigure(1, weight=1)
Как правило, при использовании grid
вы всегда должны указывать вес по крайней мере для одной строки и по крайней мере для одного столбца, чтобы виджеты расширялись в соответствии с доступным пространством.