Tkinter的grid()方法记录
我理解的grid方法就是需要将容器如何放置在你的窗口上面,主要是将窗口划分为一些行列的网格,理解方式可以按照excel中的行列理解,少许不同的就是row和column的数值在grid中是相对的大小,而不是excel中绝对位置的概念。grid最重要的是按照行列划分后放在指定的位置,和代码顺序无关。
首先pack()方法的属性有如下几个:
-row, -column, rowspan, columnspan, -ipadx, -ipady, -padx, -pady, -sticky
其中grid方法可以应用于Tkinter内的所有容器;
row,column
row参数表示的是容器将要放置在窗口划分好的第几行,(从0开始)
column参数表示的是容器将要放置在窗口划分好的第几列,(从0开始)
行列是相对值得概念;
同一个行列单元,重复放置会重叠显示,后放置的覆盖先放置;
#"作者:晒晒小木桩"
import tkinter as tk
window = tk.Tk()
#window.geometry("300x300")
tk.Button(window,text="第0行第0列").grid(row=0,column=0)
tk.Button(window,text="第0行第1列").grid(row=0,column=1)
tk.Button(window,text="第0行第2列").grid(row=0,column=5) #此处虽然将column设置为5,但是还是会放在column=2的地方
tk.Button(window,text="第1行第0列").grid(row=1,column=0)
tk.Button(window,text="第1行第1列").grid(row=1,column=1)
tk.Button(window,text="覆盖").grid(row=1,column=1) #将2个不同的容器放置在同一个位置上式叠加显示的
window.mainloop()
结果
rowspan, columnspan
这2个参数配合row和column使用,表示将对应行列单元格的row或者column合并为一个使用。
#"作者:晒晒小木桩"
import tkinter as tk
window = tk.Tk()
window.geometry("300x300")
tk.Button(window,text="第一个",bg="green").grid(row=0,column=0,rowspan=2,columnspan=2)
tk.Button(window,text="第二个",bg="red").grid(row=0,column=2,columnspan=2)
tk.Button(window,text="第1行第2列").grid(row=1,column=2)
tk.Button(window,text="第1行第3列").grid(row=1,column=3)
tk.Button(window,text="第2行第0列").grid(row=2,column=0)
tk.Button(window,text="第2行第1列").grid(row=2,column=1)
tk.Button(window,text="第2行第2列").grid(row=2,column=2)
tk.Button(window,text="第2行第3列").grid(row=2,column=3)
window.mainloop()
结果如下:
excel中就是这样的,可以按这个对应来理解。
sticky
表示tkinter属性放置时在对应row,column内的对齐方式;
sticky属性的参数有n,s,e,w,ne,nw,se,sw可选,默认居中
#"作者:晒晒小木桩"
import tkinter as tk
window = tk.Tk()
#window.geometry("300x300")
tk.Button(window,text="第一个",bg="green").grid(row=0,column=0,rowspan=2,columnspan=2,sticky="se")
tk.Button(window,text="第二个",bg="red").grid(row=0,column=2,columnspan=2,sticky="e")
tk.Button(window,text="第1行第2列").grid(row=1,column=2)
tk.Button(window,text="第1行第3列").grid(row=1,column=3)
tk.Button(window,text="第2行第0列").grid(row=2,column=0)
tk.Button(window,text="第2行第1列").grid(row=2,column=1)
tk.Button(window,text="第2行第2列").grid(row=2,column=2)
tk.Button(window,text="第2行第3列").grid(row=2,column=3)
window.mainloop()
结果如下: