Tkinter之pack所有属性详解
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不是整个窗口的中心,而是剩余位置的中心;
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()
效果如下:
如果多个容器使用同一个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()
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()
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()
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()
运行结果
after,before,in这3个基本不用
最后推荐一个看到别人总结的很好的文章,连接如下:
tkinter模块常用方法和其属性
下一篇: python库函数介绍