如何让元素粘在 Tkinter 的右下角?

Sau*_*abh 5 python tkinter python-3.x

我在 Tkinter for python3 中将按钮放在这样的框架上:

b2_1 = Button(frame1, text='aaaaaaaaaaaa')
b2_1.pack(pady=20, side=RIGHT)

b2_2 = Button(frame1, text='bbbbbbbbbbbbbbb')
b2_2.pack()
Run Code Online (Sandbox Code Playgroud)

我希望按钮 b2_1 和 b2_2 不仅贴在右侧,而且贴在底部,一个在另一个上方。我怎样才能做到这一点?

Bry*_*ley 5

“如何在右下角放置东西?”的答案 不能断章取意地回答。这实际上取决于窗口中还有什么。您可以使用 useplace轻松地将小部​​件放置在您想要的任何位置,但这很少是正确的解决方案。

如果您真的想在网格中布置东西,网格相对容易理解(例如:最右边的列,底部有几行,顶部有一行或多行。

也可以使用 Pack,尽管它通常涉及使用额外的帧。例如,您可以为左侧和右侧创建一个框架,然后将右侧框架底部的按钮打包。

还可以使用多个框架和附加框架。例如,您可以使用 grid 将主要小部件布局到页眉、主要区域和页脚中,然后使用 pack 排列页脚中的按钮。

如果您实际上只想要两个按钮,并且希望它们堆叠在右下角,我建议使用grid. 除了将它们放在底部的一行之外,您还需要确保至少有另一行和另一列占用任何额外空间。行和列可以为空,但它们必须配置为具有“权重”。

例如:

frame1.grid_rowconfigure(0, weight=1)
frame1.grid_columnconfigure(0, weight=1)

# give the empty row 0 and column 0 a non-zero weight
# so that grid gives all extra space to those columns.

b2_1.grid(row=1, column=1)
b2_2.grid(row=2, column=1)
Run Code Online (Sandbox Code Playgroud)


kab*_*nus 4

在这种情况下, pack并不是理想的几何管理器。您将包放在一个框架中,您只想将孩子们一个接一个地粘在一起。还有一个地方经理,我还没有看到它的“自然”用途。

在这种情况下,请使用网格管理器。这不像 pack 那样简单,但具有您想要的灵活性。一旦你计算出你的网格将有多少行和列,放置就很简单了.grid(column=lastcol,row=lastrow)。Terry Jan Reedy 还建议使用太大的数字,因为不会显示空列/行,但我喜欢迂腐,所以我知道我的网格到底是什么样子。