python-3.x 如何让元素粘在Tkinter中的右下角?

ubbxdtey  于 2023-06-25  发布在  Python
关注(0)|答案(6)|浏览(99)

我在Tkinter中为python3添加了按钮:

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

b2_2 = Button(frame1, text='bbbbbbbbbbbbbbb')
b2_2.pack()

我希望按钮b2_1和b2_2不仅贴在右侧,而且贴在底部,一个正上方。我该怎么做?

wnvonmuf

wnvonmuf1#

“我怎么把东西放在右下角”的答案?“断章取义是无法充分回答的这取决于窗口里还有什么。您可以使用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)
muk1a3rh

muk1a3rh2#

pack在这种情况下不是理想的几何管理器。你使用 Package 在一个框架,你只是想坚持孩子一个接一个。还有一个地方经理,我还没有看到一个“自然”的用途。
在这种情况下,使用grid manager。这不像打包那么简单,但有你想要的灵活性。一旦计算出网格将有多少行和多少列,使用.grid(column=lastcol,row=lastrow)放置就很简单了。Terry Jan Reedy还建议使用太大的数字,因为空的列/行不会显示,但我喜欢迂腐,所以我知道我的网格看起来是什么样子。

kb5ga3dv

kb5ga3dv3#

框架/窗口的.gridsize()方法返回包含网格大小的元组。即

frame1.grid_size() = (number_of_columns_in_frame1, number_of_rows_in_frame1)

将某物放在框架的右下角,用途:

b2_1 = Button(frame1, text='aaaaaaaaaaaa')
    b2_1.grid(row=frame1.grid_size()[1], column=frame1.grid_size()[0])

这将向frame 1的网格添加行和列,并将b2_1放置在新的行和列中(因为网格的行/列系统为零索引)。
在下面添加另一个按钮:使用与上述相同的系统,即

b2_2 = Button(frame1, text='bbbbbbbbbbbbbbb')
    b2_2.grid(row=frame1.grid_size()[1], column=frame1.grid_size()[0])

将创建另一个新的行和列,并将b2_2放置在b2_1的右下角。因此,将b2_2直接置于b2_1下方(即,在与b2_1相同的列中),您必须将该列减少1,即

b2_2 = Button(frame1, text='bbbbbbbbbbbbbbb')
    b2_2.grid(row=frame1.grid_size()[1], column=frame1.grid_size()[0]-1)
fquxozlt

fquxozlt4#

grid和pack不能一起工作,不能在同一个python文件中使用。
这是使用pack()方法在右下角放置按钮的命令。
btn.pack(side=BOTTOM, anchor="e", padx=8, pady=8)

czq61nw1

czq61nw15#

fateme tardasti的解决方案为我工作尝试了一下:

btn.pack(side=BOTTOM, anchor="e", padx=8, pady=8)
uujelgoq

uujelgoq6#

在网格单元中定位图元-位置与指南针相同:N、E、S、W、NE、NW、SE和SW。
这个例子把它放在右下角:

example_label.grid(column=0, row=0,sticky =SE)

相关问题