欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Tkinter之pack所有属性详解

程序员文章站 2024-02-23 21:52:58
...

Tkinter的pack()方法记录
我理解的pack方法就是需要将容器如何放置在你的窗口上面,主要是相对位置的一个概念,而且最重要的是pack方法是按照代码执行顺序一行一行放置的,先后顺序对结果有很大影响。
首先pack()方法的属性有如下几个:
-after, -anchor, -before, -expand, -fill, -in, -ipadx, -ipady, -padx, -pady, -side
其中pack方法可以应用于Tkinter内的所有容器;
 
 
 

expand

expand参数表示的是容器在整个窗口上,将容器放置在剩余空闲位置上的*(包括水平和垂直方向)
expand=1或者expand=“yes”,表示放置在*
expand=0或者expand=“no”,表示默认不扩展

#"作者:晒晒小木桩"
import tkinter as tk

window = tk.Tk()
window.geometry("150x150")
tk.Button(window, text="Button-1", bg="green").pack(expand="yes")
tk.Button(window,text="Button-2",bg="yellow").pack(expand="no")
#tk.Button(window,text="Button-3",bg="yellow").pack()
window.mainloop()

效果图如下:
可以明显的对比出expand不是整个窗口的中心,而是剩余位置的中心;
Tkinter之pack所有属性详解 
 
 

fill 和 side

fill表示的是容器相对于整个窗口是否进行填充,这个参数的优先级高于width和heigh;有三个选项可以配置,
fill=“x”,表示横向填充
fill=“y”,表示纵向填充
fill=“both”,表示横向和纵向都填充

上面几个填充选项当和side同时使用时需要注意:
当side="left"或side="right"时,fill="x"不起作用,只能填充y
side=“top”,side="bottom"时,fill="y"不起作用,只能填充x

#"作者:晒晒小木桩"
import tkinter as tk

window = tk.Tk()
window.geometry("150x150")

tk.Label(window, text="上边", bg="green").pack(fill="x", side="top")
tk.Label(window, text="下边", bg="red").pack(fill="y", side="bottom")
tk.Label(window, text="左边", bg="green").pack(fill="y", side="left")
tk.Label(window, text="右边", bg="red").pack(fill="x", side="right")
tk.Button(window, text="中间", bg="yellow").pack(expand="yes")

window.mainloop()

效果如下:

Tkinter之pack所有属性详解 
 
 
如果多个容器使用同一个side,那么将会按照如下箭头方向进行排列:

#"作者:晒晒小木桩"
import tkinter as tk

window = tk.Tk()
window.geometry("250x250")

tk.Label(window,text="1",bg="green").pack(side="left")
tk.Label(window,text="2",bg="green").pack(side="left")

tk.Label(window,text="3",bg="red").pack(side="right")
tk.Label(window,text="4",bg="red").pack(side="right")

tk.Label(window,text="5",bg="yellow").pack(side="top")
tk.Label(window,text="6",bg="yellow").pack(side="top")

tk.Label(window,text="7",bg="pink").pack(side="bottom")
tk.Label(window,text="8",bg="pink").pack(side="bottom")

window.mainloop()

Tkinter之pack所有属性详解 
 
 

padx,pady和ipadx,ipady

1.简单来说就是padx和pady表示的是2个容器,或者是容器和边框之间需要的间距(x是上和下对称,y是左和右对称)
2.ipadx和ipady表示容器的内容和容器边框之间的距离,同样是对称的;
下面2个列子说明;
ipadx和ipady:

#"作者:晒晒小木桩"
import tkinter as tk

window = tk.Tk()
window.geometry("200x200")
tk.Button(window,text="Button-1").pack()
tk.Button(window,text="Button-2").pack(ipadx=10,ipady=10)
window.mainloop()

Tkinter之pack所有属性详解
 
 
padx和pady:

#"作者:晒晒小木桩"
import tkinter as tk

window = tk.Tk()
tk.Button(window,text="Button-1").pack()
tk.Button(window,text="Button-2").pack(padx=50,pady=10)
window.mainloop()

Tkinter之pack所有属性详解 
 
 

anchor

首先anchor共有9个参数可以设置n, s, w, e ,nw, ne, sw, se, center. 分别是各个方向英语的缩写。
有一个注意点是,anchor 放置容器时是相对于每一行放置的,重点在控制每一个容器在每一行的位置比较有用。如果要想实现相对于整个窗口的相对位置放置,可以参考上面的side用法。

#"作者:晒晒小木桩"
import tkinter as tk

window = tk.Tk()
window.geometry("300x300")

tk.Button(window,text="1-North West").pack(anchor="nw")
tk.Button(window,text="2-North").pack(anchor="n")
tk.Button(window,text="3-North East").pack(anchor="ne")
tk.Button(window,text="4-West").pack(anchor="w")
tk.Button(window,text="5-East").pack(anchor="e")
tk.Button(window,text="6-South West").pack(anchor="sw")
tk.Button(window,text="7-South").pack(anchor="s")
tk.Button(window,text="8-South East").pack(anchor="se")
tk.Button(window,text="9-Center").pack(anchor="center")

window.mainloop()

运行结果
 
Tkinter之pack所有属性详解 
 
 

after,before,in这3个基本不用

最后推荐一个看到别人总结的很好的文章,连接如下:
tkinter模块常用方法和其属性