Как разместить центр этикетки по ширине? - PullRequest
0 голосов
/ 10 мая 2018

Я хочу разместить метку в центре по ширине окна.Я не могу добиться этого с помощью «якоря» хорошо.Я новичок в Python.

Мой код:

window = Tk()
window.geometry("440x640") 
window.title("Title")
Label(window, text="this text to center",font=("Calibri",32)).grid(row=0)
Label(window, text="Second").grid(row=1)
e2 = Entry(window)
e2.grid(row=1, column=1)
window.mainloop()

1 Ответ

0 голосов
/ 10 мая 2018

По умолчанию элементы центрируются в ячейке сетки без необходимости что-либо делать. Проблема в том, что столбец, содержащий ячейку, достаточно широк для самого большого элемента в этом столбце, который в данном случае является заголовком. Таким образом, он центрирован в своей ячейке, но ячейка имеет такую ​​же ширину, как и метка, поэтому она не выглядит центрированной.

Если вы хотите, чтобы заголовок охватывал ширину окна (а не ячейки), вам нужно использовать параметр columnspan, чтобы он проходил по всем столбцам, которые вы используете .

Например:

l1 = Label(window, ...)
l1.grid(row=0, columnspan=2)

Однако он по-прежнему не будет отображаться по центру, поскольку столбцы 0 и 1 будут иметь размер не более их самых больших элементов, что оставляет некоторое дополнительное пространство в графическом интерфейсе, поскольку вы явно устанавливаете ширину окна. Вам нужно сделать одну из двух вещей: сделать окно меньше (или позволить Tkinter определить лучший размер для вас, что обычно является правильным решением), или указать, что столбец 0 или 1 (или оба) расширится, чтобы заполнить любые дополнительные пространство.

В первом случае просто удалите вызов на geometry. Во-вторых, используйте columnconfigure в корне, чтобы один или оба столбца имели «вес», что означает, что они будут расширяться, занимая дополнительное пространство.

window.grid_columnconfigure(1, weight=1)

Как правило, при использовании grid вы всегда должны указывать вес по крайней мере для одной строки и по крайней мере для одного столбца, чтобы виджеты расширялись в соответствии с доступным пространством.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...