我正在查看 Tkinter 的文档,我很好奇小部件在使用grid布局管理器具有相同的行和列时的行为是什么。
据我所知,这是网络上最详细的解释:
列和行
使用网格,小部件被分配一个“列”号和一个“行”号,表示它们彼此的相对位置。因此,同一列中的所有小部件将彼此上方或下方,而同一行中的小部件将彼此左侧或右侧。
列号和行号必须是整数,第一列和第一行从0开始。可以在列号和行号之间留空(例如第0、1、2、10、11、12、20、21列),方便如果您打算稍后在用户界面中间添加更多小部件。
每列的宽度(或每行的高度)取决于列或行中包含的小部件的宽度或高度。这意味着在勾画您的用户界面并将其分为行和列时,您无需担心每列或每行的宽度相等。
(2018 年 11 月 21 日从https://tkdocs.com/tutorial/grid.html检索)
【强调我的】
但是,它并不清楚同一列和行中的小部件会发生什么。似乎也没有grid(**options)可以指定单元格中放置冲突小部件的位置,尽管sticky可能有一些交互。
Tkinter 的grid布局管理器是否按声明的顺序从左到右和从上到下放置“碰撞”小部件?当根小部件(通常是框架或窗口)调整大小时,包含多个小部件的单元格的行为如何?是否有一种机制可以在发生冲突时覆盖默认行为?
编辑:我用来测试行为的代码。似乎只显示了最后一个标签。
import tkinter, random
root = tkinter.Tk()
root.title('Widget Collision Test - Grid Layout')
labels = []
for i in range(3):
labels.append(tkinter.Label(root, text=str(i+1)))
labels[i].grid(
row=0, column=0,
padx=50, pady=50,
sticky=random.choice('N W S E'.split()))
root.mainloop()
慕侠2389804
相关分类