Как сделать так, чтобы tkinter :: pack () поместил метку в верхний левый угол нижеприведенной программы? - PullRequest
0 голосов
/ 19 сентября 2019

Я использую pack () для выравнивания надписи и кнопок на tkinter. Следующий код:

from tkinter import *
wind=Tk()
wind.geometry('450x450')
l1=Label(wind,text='Did you mean:')
l1.pack(side=LEFT)
b1=Button(wind,text='Button1',width=450)
b1.pack()
b2=Button(wind,text='Button2',width=450)
b2.pack()
wind.mainloop()

дает вывод: 1

Я пытался удалитьside=LEFT из l1.pack(side=LEFT) дает: 2 .

Для меня ожидаемый результат - метка l1 в верхнем левом углу и кнопки, расположенные под ней.

1 Ответ

0 голосов
/ 19 сентября 2019

pack работает с блочной моделью, выравнивая виджеты вдоль одной стороны пустого пространства в контейнере.Таким образом, чтобы поместить что-то вверху, вам нужно использовать side="top" (или side=TOP, если вы предпочитаете использовать именованную константу), и это должно предшествовать другим виджетам.

В вашем конкретном случае,чтобы выровнять виджет сверху, вы должны сделать следующее:

l1.pack(side=TOP)

По умолчанию это будет центрировать виджет по верхнему краю.Если вы также хотите, чтобы метка была выровнена по левому краю, вы должны использовать опцию anchor, которая принимает точки компаса («n», «s», «e», «w», «nw» и т. Д.).

Таким образом, чтобы разместить виджет сверху и привязать его к верхнему левому углу, вы должны сделать что-то вроде этого:

l1.pack(side=TOP, anchor=NW)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...