admin 管理员组文章数量: 887021
tkinter布局:place, pack, grid
文章目录
- place
- pack
- grid
Tkinter系列:
- GUI初步💎布局💎绑定变量💎绑定事件💎消息框💎文件对话框
- 扫雷小游戏💎强行表白神器
Tkinter共有三种布局方案,分别是绝对位置布局place, 相对位置布局pack和网格布局grid。
place
place是通过声明具体位置来进行布局的方法,这个具体位置既可以绝对坐标,也可以是相对于父控件的百分比的相对坐标。
下面通过4个label来演示一下place的布局方法。
import tkinter as tkroot = tk.Tk()
lb1 = tk.Label(root, text='(0,0)')
lb1.place(x=0, y=0, anchor=tk.NW)lb2 = tk.Label(root, text='(100,100)')
lb2.place(x=15, y=15, anchor=tk.NW)lb3 = tk.Label(root, text='rel(0.5,0.5)')
lb3.place(relx=0.5, rely=0.5, anchor=tk.CENTER)lb4 = tk.Label(root, text='rel(0.5,0.5)+')
lb4.place(relx=0.5, rely=0.5, x=40, y=40,anchor=tk.NW)root.mainloop()
效果如图所示
其中, ( x , y ) (x,y) (x,y)是绝对坐标,lb1位于父控件中 x = 0 , y = 0 x=0, y=0 x=0,y=0的位置;lb1位于父控件的 x = 100 , y = 100 x=100,y=100 x=100,y=100的位置。
relx, rely是相对坐标,lb3的x坐标是父控件宽度的0.5倍,也就是50%,相应地y坐标亦然。
lb4先通过相对坐标设定了一个位置,然后再用绝对坐标,以这个位置为原点,再设置绝对坐标。
pack
pack顾名思义,就是打包,如果把窗口想象成是一个箱子,那么打包肯定是哪里有空打哪里。比如最下面放了一层衣服,没地方放了只能放在第二层;如果第二层只放了一个砖头,那么其他位置还有空间,于是可以贴着砖头再放一个砖头。
下面通过pack
在窗口中打包7个按钮
root = tk.Tk()
tk.Button(root,text='A').pack(side=tk.LEFT,expand=tk.YES,fill=tk.Y)
tk.Button(root,text='B').pack(side=tk.TOP,expand=tk.YES,fill=tk.BOTH)
tk.Button(root,text='C').pack(side=tk.RIGHT,expand=tk.YES,fill=tk.NONE)
tk.Button(root,text='D').pack(side=tk.LEFT,expand=tk.NO,fill=tk.Y)
tk.Button(root,text='E').pack(side=tk.TOP,expand=tk.YES,fill=tk.BOTH)
tk.Button(root,text='F').pack(side=tk.BOTTOM,expand=tk.YES)
tk.Button(root,text='G').pack(anchor=SE)
root.mainloop()
效果为
其中,A
是第一个压入到窗口中的,其side
为tk.LEFT
,表示压到最左边,expand
为tk.YES
,表示最大填充,fill=tk.Y
表示沿着Y
向填充。
B紧随其后,填充side为TOP,就是压到最上面,但由于晚来一步,已经被A占据的地盘自然抢不来了。其fill为tk.BOTH,说明向XY两个方向填充,所以B比A看上去更加充实。
C向右填充,但是并没有选择fill,所以并没有填充,只能维持原本的尺寸。
后面的DEFG,都可以用同样的道理来理解。
grid
grid
顾名思义就是网格,网格布局的好处是可以看上去更加规整,示例如下
root=tk.Tk()
tk.Label(root,text="First").grid(row=0)
tk.Label(root,text="Second").grid(row=1)#第二行tk.Entry(root).grid(row=0,column=1)
tk.Entry(root).grid(row=1,column=1)tk.mainloop()
效果如图所示
其实就对应表格
First | Entry ( 0 , 1 ) (0,1) (0,1) |
Second | Entry ( 1 , 1 ) (1,1) (1,1) |
其中,row
用于声明所在行号,column
声明所在列号,注意首行和首列均从0开始。
本文标签: tkinter布局place pack grid
版权声明:本文标题:tkinter布局:place, pack, grid 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1715481367h641714.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论