Tkinter自学02:tkinter 的3种布局管理器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tkinter自学02:tkinter 的3种布局管理器相关的知识,希望对你有一定的参考价值。
参考技术A 所谓布局管理,就是对添加到窗口中的组件的大小和位置进行设置。此外,当用户调整了窗口大小后,布局管理器还会自动调整窗口中各个组件的大小和位置。
tkinter有三种布局管理器:
(1)Pack
(2)Gird
(3)Place
使用pack布局时,当向窗口中添加组件时,这些组件会依次向后排列,排列方向可以是水平的,也可以是垂直的。
通常我 推荐 使用python自带的 help() 来查看我们不太熟悉的函数。
从上面可以看到,pack通常支持以下的方法:
以上就是pack的常用参数,推荐自己试一试。下面介绍几种常用的参数的使用效果。
先写一个没有参数的栗子。
结果如下:
还是上面的栗子,稍微改一下
将原始的栗子改一下:
实际上,第二个标签是垂直方向填充的,只是这里看不出来,还是建议自己尝试。
多种属性综合起来使用,可以得到自己想要的结果,建议自己多去尝试。
这里举一个小栗子。
Grid布局是Tkinter后来引入的布局方式,相对来说,使用更方便简单。而且相比Pack布局,Grid布局在细节的调整上要更加强大。
Grid布局将容器空间分成一个个类似excel表格的单元格,按照 行(row) 和 列(column) 的方式排列组件,组件位置由其行和列的值来决定:
行号相同而列号不同的几个组件会被依次上下排列
列号相同而行号不同的几个组件会被依次左右排列
使用Grid布局的过程就是为各个组件指定行号和列号的过程,不需要为每个网格指定大小,Grid布局会自动设置合适的大小。
还是 推荐 使用python自带的 help() 来查看我们不太熟悉的函数。
上面的参数与Pack的很多都相同,其余的参数都很好理解,简单列在下面供参考:
接Pack的第一个栗子,将布局方式稍微做一下改变:
注意到,类似excel,列宽默认根据最宽的组件宽度来设置,行高也是一样的,这里没有演示,可以自己试试。
Place布局就是其他GUI布局中的“绝对布局”,要求指定每个组件的绝对位置或者相对于其他组件的相对位置。
还是先看help:
不做过多的介绍了,参数基本上能看懂,无非就是指定绝对的位置和相对的位置,而一般来说Place用得较少。
所以还是推荐Grid布局管理,方便快捷,整体设计起来比较方便。
Python连载61-tkinter三种布局
一、pack布局举例
#pack布局案例 import tkinter baseFrame = tkinter.Tk() #以下代码都是创建一个组件,然后布局 btn1 = tkinter.Button(baseFrame,text="A") btn1.pack(side=tkinter.LEFT,expand=tkinter.YES,fill=tkinter.Y) btn2 = tkinter.Button(baseFrame,text="B") btn2.pack(side=tkinter.TOP,expand=tkinter.YES,fill=tkinter.BOTH) btn2 = tkinter.Button(baseFrame,text="C") btn2.pack(side=tkinter.RIGHT,expand=tkinter.YES,fill=tkinter.NONE) btn2 = tkinter.Button(baseFrame,text="D") btn2.pack(side=tkinter.LEFT,expand=tkinter.NO,fill=tkinter.Y) btn2 = tkinter.Button(baseFrame,text="F") btn2.pack(side=tkinter.BOTTOM,expand=tkinter.YES) btn2 = tkinter.Button(baseFrame,text="G") btn2.pack(anchor=tkinter.SE) baseFrame.mainloop()
二、grid布局举例
1.通用使用方式:组件对象,grid(设置.......)
2.利用row,column编号,都是从0开始
3.sticky:N\\E\\S\\W表示上下左右,用来决定组件从哪个方向开始
4.支持ipadx,padx等参数,跟pack函数含义一样
5.支持rowspan,columnspan,表示跨行,跨列数量
#pack布局案例 import tkinter # baseFrame = tkinter.Tk() # #以下代码都是创建一个组件,然后布局 # btn1 = tkinter.Button(baseFrame,text="A") # btn1.pack(side=tkinter.LEFT,expand=tkinter.YES,fill=tkinter.Y) # # btn2 = tkinter.Button(baseFrame,text="B") # btn2.pack(side=tkinter.TOP,expand=tkinter.YES,fill=tkinter.BOTH) # # btn2 = tkinter.Button(baseFrame,text="C") # btn2.pack(side=tkinter.RIGHT,expand=tkinter.YES,fill=tkinter.NONE) # # btn2 = tkinter.Button(baseFrame,text="D") # btn2.pack(side=tkinter.LEFT,expand=tkinter.NO,fill=tkinter.Y) # # btn2 = tkinter.Button(baseFrame,text="F") # btn2.pack(side=tkinter.BOTTOM,expand=tkinter.YES) # # btn2 = tkinter.Button(baseFrame,text="G") # btn2.pack(anchor=tkinter.SE) # # # baseFrame.mainloop() baseFrame2 = tkinter.Tk() lb1 = tkinter.Label(baseFrame2,text="账号:") lb1.grid(row=0,sticky=tkinter.W) tkinter.Entry(baseFrame2).grid(row=0,column=1,sticky=tkinter.E) lb2 = tkinter.Label(baseFrame2,text="密码:") lb2.grid(row=1,sticky=tkinter.W) tkinter.Entry(baseFrame2).grid(row=1,column=1,sticky=tkinter.E) button = tkinter.Button(baseFrame2,text="登录").grid(row=2,column=1,sticky=tkinter.E) baseFrame2.mainloop()
三、place布局
1.明确方位的摆放
2.相对位置布局,随意改变窗口大小会导致混乱。
3.使用place函数,分为绝对布局和相对布局,绝对布局使用x,y参数
4.相对布局使用relx.rely,relheight,relwidth.
四、源码
D61_ThreeFrameOfTkinter.py
https://github.com/ruigege66/Python_learning/blob/master/D61_ThreeFrameOfTkinter.py
2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料
以上是关于Tkinter自学02:tkinter 的3种布局管理器的主要内容,如果未能解决你的问题,请参考以下文章