[英]Create a matrix that contains 1 if there is a 1 in the bottom-right corner
[英]How to get a element to stick to the bottom-right corner in Tkinter?
我在 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 不仅要粘在右侧,还要粘在底部,一个在另一个的正上方。 我怎样才能做到这一点?
“如何在右下角放置东西?”的答案不能断章取意地回答。 这实际上取决于窗口中还有什么。 您可以使用place
轻松地将小部件放置在您想要的任何位置,但这很少是正确的解决方案。
如果您确实想在网格中布置内容,则网格相对容易理解(例如:最右侧的列,底部有几行,顶部有一行或多行。
也可以使用 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)
框架/窗口的 .gridsize() 方法返回一个具有网格大小的元组。 IE
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])
这将向 frame1 的网格添加一行和一列,并将 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)
grid 和 pack 不能一起工作,不能在同一个 python 文件中使用。
这是使用 pack() 方法在右下角放置一个按钮的命令。
btn.pack(side=BOTTOM, anchor="e", padx=8, pady=8)
将元素定位在网格单元内 - 位置与指南针相同:N、E、S、W、NE、NW、SE 和 SW。
这个例子把它贴在右下角:
example_label.grid(column=0, row=0,sticky =SE)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.