Python 专题

小鱼儿学Tkinter-Pack布局

2022-06-27  本文已影响0人  小鱼儿_yzh

tkinter 有三种布局管理方式:

· pack · grid · place
注意这三种布局管理在同一个 master window 里一定不可以混用!

布局管理有以下功能:

虽然控件自己也可以指定大小和对齐方式等信息, 但最终的控件大小及位置还是由布局管理决定的.

Pack 布局管理

fill 和 expand

from tkinter import *
root1 = Tk()
root2 = Tk()
root3 = Tk()
root4 = Tk()
root1.geometry('260x260')
root2.geometry('260x260')
root3.geometry('260x260')
root4.geometry('260x260')
root1.title('ROOT 1')
root2.title('ROOT 2')
root3.title('ROOT 3')
root4.title('ROOT 4')
# ROOT1 窗口显示
Label(root1,text='pack').pack()
for i in range(5):
    Label(root1,text ='pack'+str(i)).pack()
# ROOT2 窗口显示
Label(root2,text='pack 11',bg='red').pack(fill=Y,expand = 1)
Label(root2,text='pack 12',bg='blue').pack(fill=BOTH,expand = 1)
Label(root2,text='pack 13',bg='green').pack(fill=X,expand =1)
# ROOT3 窗口显示
Label(root3,text='pack 31',bg='red', fg='yellow').pack(fill=Y,expand =0 , side = LEFT)
Label(root3,text='pack 32',bg='blue').pack(fill=BOTH,expand = 0 , side = RIGHT)
Label(root3,text='pack 33',bg='green').pack(fill=X,expand =0, side = TOP)
Label(root3,text='pack 34',bg='green').pack(fill=X,expand =0, side = BOTTOM)
Label(root3,text='pack 35',bg='green').pack(fill=X,expand =0, side = LEFT)
# ROOT4 窗口显示
Label(root4,text='pack 41',bg='red', fg='yellow').pack(fill=Y,expand =1 , side = LEFT)
Label(root4,text='pack 42',bg='blue').pack(fill=BOTH,expand = 1 , side = RIGHT)
Label(root4,text='pack 43',bg='green').pack(fill=X,expand =1, side = TOP)
Label(root4,text='pack 44',bg='green').pack(fill=X,expand =1, side = BOTTOM)
Label(root4,text='pack 45',bg='green').pack(fill=X,expand =1, side = LEFT)
root1.mainloop()

pack 布局示例图

设置组件之间的间隙大小

# ipadx,ipady设置内部间隙
# padx,pady设置外部间隙
# side 顺次放置控件

from tkinter import *
root = Tk()
root.geometry('300x300')
root.title('Pack布局测试 2')

lb_1 = Label(root,text='label_1',bg='red')
lb_1.pack(side = LEFT, ipadx =10 , expand = 1)

lb_2 = Label(root,text='label_2',bg='green')
lb_2.pack(side = LEFT,padx = 10 , expand = 1, fill = BOTH)

lb_3 = Label(root,text='label_3',bg='blue')
lb_3.pack(side = LEFT, pady = 10 , expand = 1, fill = X)

root.mainloop()

label_1 的 ipadx 值变化效果图 label_2 的 padx 值变化效果图

参考资料:

Python的GUI编程之 Pack、Place、Grid 的区别

上一篇下一篇

猜你喜欢

热点阅读