之前的Tkinter教程中,我们创建的控件默认都是从上到下依次排列的。实际上,我们可以完全控制每个控件的位置。
Tkinter主要提供pack、grid、place三种布局方法。
pack布局,也叫填充布局,是Tkinter中最基本的布局。
布局方式为按照上下左右的方向去填充控件。
示例:
拖动窗口边框改变窗口大小,控件相对于窗口的位置不变
完整代码:
import tkinter main = tkinter.Tk() main.geometry("300x300") b1 = tkinter.Button(main, text='b1') b1.pack(side='top') b2 = tkinter.Button(main, text='b2') b2.pack(side='bottom') b3 = tkinter.Button(main, text='b3') b3.pack(side='left') b4 = tkinter.Button(main, text='b4') b4.pack(side='right') main.mainloop()
grid布局,也叫网格布局,将窗口划分为网格,然后通过第几行第几列去放置控件
示例:
改变窗口大小不会影响控件的位置
完整代码:
import tkinter main = tkinter.Tk() main.geometry("300x300") b1 = tkinter.Button(main, text='b1') b1.grid(row=0,column=0) b2 = tkinter.Button(main, text='b2') b2.grid(row=0,column=1) b3 = tkinter.Button(main, text='b3') b3.grid(row=1,column=0) b4 = tkinter.Button(main, text='b4') b4.grid(row=1,column=1) main.mainloop()
place布局,也可以叫绝对位置布局,将控件放置在指定的x坐标和y坐标对应的位置上,可以随意指定
示例:
改变窗口大小也不会影响控件的位置
完整代码:
import tkinter main = tkinter.Tk() main.geometry("300x300") b1 = tkinter.Button(main, text='b1') b1.place(x=0,y=0) b2 = tkinter.Button(main, text='b2') b2.place(x=40,y=40) b3 = tkinter.Button(main, text='b3') b3.place(x=80,y=80) b4 = tkinter.Button(main, text='b4') b4.place(x=120,y=120) main.mainloop()