如何让 tkinter::pack() 在下面程序的左上角放置标签?

Nik*_*lan 5 tkinter python-3.x

我正在使用 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()
Run Code Online (Sandbox Code Playgroud)

给出输出:1

我尝试side=LEFT从中删除l1.pack(side=LEFT)它给出:2

对我来说,预期的输出是左上角的标签 l1 和堆叠在其下方的按钮。

Bry*_*ley 11

pack使用盒子模型,沿着容器中空白空间的一侧对齐小部件。因此,要将某些东西放在顶部,您需要使用side="top"(或者side=TOP如果您更喜欢使用命名常量),并且它需要放在其他小部件之前。

在您的特定情况下,要使小部件在顶部对齐,您可以执行以下操作:

l1.pack(side=TOP)
Run Code Online (Sandbox Code Playgroud)

默认情况下,这将使小部件沿顶部边缘居中。如果您还希望标签向左对齐,则可以使用该anchor选项,该选项采用罗盘的点(“n”、“s”、“e”、“w”、“nw”等)。

因此,要将小部件放在顶部,并将其锚定到左上角,您可以执行以下操作:

l1.pack(side=TOP, anchor=NW)
Run Code Online (Sandbox Code Playgroud)