当您创建一个小部件时,它是不会出现的,直到您将它注册到几何管理器中。 因此,小部件的构建和放置是一个两步过程,就像这样:
self.thing = tk.Constructor(parent, ...)
self.thing.grid(...)
-
第一行 创建一个控件实例
-
第二行 注册到集合管理器中
其中,Constructor 是 Button、Frame 等小部件类之一,而 parent 是在其中构造该子小部件的父控件。 所有小部件都有一个 .grid() 方法,您可以使用它来告诉几何管理器将它放在哪里。
.grid() 方法
要在您的应用程序界面上显示小部件 w
:
w.grid(option=value, ...)
该方法将widget w 注册到网格几何管理器——如果你不这样做,widget 将在内部存在,但它不会在屏幕上可见。 有关选项,请参见表 1,“.grid() 几何管理器”。
| 参数 | 描述 |
| — | — |
| column | 您希望小部件网格化的列号,从零开始计数。 默认值为零。 |
| columnspan | 通常一个小部件只占据网格中的一个单元格。 但是,您可以通过将 columnspan 选项设置为 columnspan 单元格数来获取一行的多个单元格并将它们合并为一个更大的单元格。 例如, w.grid(row=0, column=2, columnspan=3) 会将小部件 w 放置在跨越第 0 行的第 2、3 和 4 列的单元格中。 |
| in_ | 要将 w 注册为某个小部件 w2 的子部件,请使用 in_=w2。新的父控件 w2 必须是创建 w 时使用的父控件的后代。 |
| ipadx | 内部横向填充。 此尺寸添加到窗口小部件的左侧和右侧。 |
| ipady | 内部纵向填充。 此尺寸添加到窗口小部件的顶部和底部边框内。 |
| padx | 外部横向填充。 此尺寸添加到小部件外部的左侧和右侧。 |
| pady | 外部纵向填充。 此尺寸添加到小部件外部的上方和下方。 |
| row | 您希望小部件网格化的行号,从零开始计数。 默认值为零 |
| rowspan | 通常一个小部件只占据网格中的一个单元格。 但是,您可以通过将 rowspan 选项设置为要抓取的单元格数来抓取一列的多个相邻单元格。 rowspan 此选项可与 columnspan 选项结合使用以抓取单元格块。 例如,w.grid(row=3, column=2, rowspan=4, columnspan=5) 会将小部件 w 放置在合并20 个单元格形成的区域中,行号为3-6,列号为2-6。 |
| sticky | 此选项确定如何在单元格内分配小部件未以其自然大小占用的任何额外空间。 见下文。 |
-
如果您不提供
sticky
属性,则默认行为是将小部件居中放置在单元格中。 -
您可以使用
sticky=tk.NE
(右上角)、tk.SE
(底部 右侧)、tk.SW
(左下)或tk.NW
(左上)。 -
您可以使用
sticky=tk.N
(顶部中心)将小部件放置在单元格一侧的中心位置,tk.E
(右侧 中心)、tk.S
(底部 中心)或tk.W
(左侧 中心)。 -
使用
sticky=tk.N+tk.S
垂直拉伸小部件但保持水平居中。 -
使用
sticky=tk.E+tk.W
将其水平拉伸但使其垂直居中。 -
使用
sticky=tk.N+tk.E+tk.S+tk.W
水平和垂直拉伸小部件以填充单元格。 -
其他组合也将起作用。 例如,
sticky=tk.N+tk.S+tk.W
将垂直拉伸小部件并将其放置在西(左)墙上。
其他网格管理方式
此处内容对初学者不重要,日后再补
配置列和行的大小
除非您采取某些措施,否则给定小部件内的网格列的宽度将等于其最宽单元格的宽度,而网格行的高度将是其最高单元格的高度。
如果小部件没有完全填满单元格,小部件上的sticky
属性仅控制它的放置位置。
如果要覆盖列和行的这种自动调整大小,请在包含网格布局的父控件件 w
上使用这些方法:
w.columnconfigure(N, option=value, ...)
在小部件 w 内的网格布局中,配置列 N 以便给定选项具有给定值。 有关选项,请参见下表。
w.rowconfigure(N, option=value, ...)
在小部件 w 内的网格布局中,配置第 N 行,以便给定选项具有给定值。
有关选项,请参见下表。
以下是用于配置列和行大小的选项:
| 属性 | 描述 |
| — | — |
| minsize | 列或行的最小尺寸(以像素为单位)。 如果给定的列或行中没有任何内容,即使您使用此选项,它也不会出现。 |
| pad | 将添加到给定列或行、列或行中最大单元格上方和上方的像素数。 |
| weight | 要使列或行可拉伸,请使用此选项并提供一个值,该值在分配额外空间时给出此列或行的相对权重。 例如,如果小部件 w 包含网格布局,这些行会将额外空间的四分之三分配给第一列,将四分之一分配给第二列 w.columnconfigure(0, weight=3) w.columnconfigure(1, weight=1)
如果未使用此选项,则列或行将不会拉伸。 |
使顶层窗口大小可调整
跳槽是每个人的职业生涯中都要经历的过程,不论你是搜索到的这篇文章还是无意中浏览到的这篇文章,希望你没有白白浪费停留在这里的时间,能给你接下来或者以后的笔试面试带来一些帮助。
也许是互联网未来10年中最好的一年。WINTER IS COMING。但是如果你不真正的自己去尝试尝试,你永远不知道市面上的行情如何。这次找工作下来,我自身感觉市场并没有那么可怕,也拿到了几个大厂的offer。在此进行一个总结,给自己,也希望能帮助到需要的同学。
面试准备
面试准备根据每个人掌握的知识不同,准备的时间也不一样。现在对于前端岗位,以前也许不是很重视算法这块,但是现在很多公司也都会考。建议大家平时有空的时候多刷刷leetcode。算法的准备时间比较长,是一个长期的过程。需要在掌握了大部分前端基础知识的情况下,再有针对性的去复习算法。面试的时候算法能做出来肯定加分,但做不出来也不会一票否决,面试官也会给你提供一些思路。