赞
踩
虽然, tkinter
提供了多种控制布局的方式,但我还是建议使用 grid
处理所有布局问题。
下面,本文将聚焦 grid
布局管理方式,如果你有学习其他布局方式的需要,可以留言给我,我会在后继章节优先更新其他布局方式。
在 grid
布局中的所有控件都会被赋予一个行号和一个列号,这是每个控件相对于其他控件位置的凭证。
同一列控件上下排布,同一行控件左右排布。
行与列的宽度和高度由内部的控件决定,在使用 grid
布局时,不需要关注行和列的大小。
grid
布局使用 grid
按钮非常简单,只需要在创建控件之后,指定控件放置的表格行号和列号就可以了。
示例代码如下:
from tkinter import * from tkinter import ttk root = Tk() btn1 = ttk.Button(text="第一个按钮") # 创建按钮 btn2 = ttk.Button(text="第二个按钮") btn3 = ttk.Button(text="第三个按钮") btn1.grid(column=0,row=0) # 放置按钮 btn2.grid(column=1,row=1) btn3.grid(column=2,row=2) root.mainloop()
以上代码创建了三个按钮,排列在窗口左上到右下的对角线上,如下图所示:
有些时候,会有一些较大的控件,需要占据多行、多列的窗口空间,此时就需要在指定空间位置时额外指定占据的行数和列数。
示例代码如下:
from tkinter import * from tkinter import ttk root = Tk() s = ttk.Style() s.configure('1.TFrame',background='red') btn1 = ttk.Button(root,text="第一个按钮") # 创建按钮 btn2 = ttk.Button(root,text="第二个按钮") ety1 = ttk.Entry(root) frm = ttk.Frame(root,width=200,height=200,style='1.TFrame') btn1.grid(column=0,row=0) btn2.grid(column=1,row=0) ety1.grid(column=0,row=1,columnspan=2) # 使用 columnspan 跨越两列 frm.grid(column=0,row=2,columnspan=2,rowspan=2) root.mainloop()
代码执行效果如下:
以上代码涉及了两个还没有介绍到的控件 ttk.Entry
和 ttk.Frame
,后继都会更新上的。
这两个可选参数类似于 css
样式中的 padding
,属于内边距。
ipadx
:内部横向填充,添加到控件内部的左侧和右侧。
ipady
:内部纵向填充,添加到控件内部的上侧和下侧。
代码示例如下:
from tkinter import * from tkinter import ttk root = Tk() btn = ttk.Button(root,text="一个按钮") btn.grid(column=0,row=0) btn2 = ttk.Button(root,text="两个按钮") btn2.grid(column=0,row=1,ipadx=10) btn3 = ttk.Button(root,text='三个按钮') btn3.grid(column=0,row=2,ipady=10) btn4 = ttk.Button(root,text="四个按钮") btn4.grid(column=0,row=3,ipady=10,ipadx=10) root.mainloop()
代码执行结果如下图:
按钮控件的内部被填充了额外的控件,变得臃肿。
padx
和 pady
参数属于外边距,类似于 css
样式中的 margin
参数。
padx
:外部横向填充,添加到控件外部的左侧和右侧。
pady
:外部纵向填充,添加到控件外部的上侧和下侧。
示例代码如下:
from tkinter import * from tkinter import ttk root = Tk() btn = ttk.Button(root,text="一个按钮") btn.grid(column=0,row=0) btn2 = ttk.Button(root,text="两个按钮") btn2.grid(column=0,row=1,pady=10) btn3 = ttk.Button(root,text='三个按钮') btn3.grid(column=0,row=2) btn4 = ttk.Button(root,text="四个按钮") btn4.grid(column=1,row=0,padx=10) root.mainloop()
代码执行结果如下图:
第二个和第四个按钮因为增加了外边距和其他按钮中间产生了空隙。
sticky
选项确定如何在单元格内分配控件件未以其自然大小占用的任何额外空间。
如果不指定 sticky
参数,控件将居于单元格中部,未占据的额外控件均匀分布四周。
sticky
有四个可选值,分别为:N
、S
、W
、E
,分别对应上、下、左、右。
sticky=(N,S)
使控件上下方向拉伸,并保持横向居中。
sticky=(W,E)
使控件左右方向拉伸,并保持上下居中。
示例代码如下:
from tkinter import * from tkinter import ttk root = Tk() btn1 = ttk.Button(root,text="第一个按钮") btn2 = ttk.Button(root,text="第二个按钮") btn3 = ttk.Button(root,text="第三个按钮") btn4 = ttk.Button(root,text="第四个按钮") btn5 = ttk.Button(root,text="第五个按钮") btn1.grid(column=0,row=0,sticky=N) btn2.grid(column=0,row=1,sticky=E) btn3.grid(column=0,row=2,sticky=W) btn4.grid(column=0,row=3,sticky=S) btn5.grid(column=0,row=4,sticky=(E,W)) root.columnconfigure(0,weight=1) root.rowconfigure(2,weight=1) root.rowconfigure(3,weight=1) root.mainloop()
代码执行结果:
rowconfigure
和 columnconfigure
方法可以设定每个行和列的比例,我们可以通过这种方式使控件伴随窗口大小变化,自动适应。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
34855489)]
[外链图片转存中…(img-d7RoSeGc-1715034855489)]
[外链图片转存中…(img-i6l9qY2Z-1715034855489)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。