frame越过另一个frame_网格(grid)和填充(pack)两种方式实现一个可以放大组件的界面...

分别通过grid和pack两种几何管理方式创建一个可以随着界面拉伸内部组件也随之扩展的界面,并且通过增加Frame容器来规避grid和pack不能在同一个容器中同时使用的问题,将两个界面合二为一,然后底部增加一个quit按钮,用于退出程序。

最终界面如图所示:

41544a4c308a0fa7213f6a155006cf56.png

原始图片

完整代码如下:

from tkinter import *colors=['red','green','orange','white','yellow','blue']def gridbox(root): frm=Frame(root) Label(frm,text='Grid').grid(columnspan=2) # 选项columnspan的设置用于允许label组件可以横跨两列(实现居中的效果),rawspan选项可以实现横跨多行的效果 row=1 for color in colors: lab=Label(frm,text=color,relief=RIDGE,width=25) ent=Entry(frm,bg=color,relief=SUNKEN,width=50) lab.grid(row=row,column=0,sticky=NSEW) # sticky选项是grid几何管理器中设置是否允许组件拉伸的选项 ent.grid(row=row,column=1,sticky=NSEW) # NSEW表示允许组件向4个方向都可以拉伸 frm.rowconfigure(row,weight=1) # 要允许组件的行和列可以扩展,必须设置一个大于0的weight值,默认是0不扩展 row+=1 frm.columnconfigure(0,weight=1) # weight值的不同可以让他们按照不同的比例扩展 frm.columnconfigure(1,weight=1) frm.pack(expand=YES,fill=BOTH)
204742dec5d11a28041e3c4691c95cc0.png

扩展效果

def packbox(root): frm=Frame(root) Label(frm, text='Pack').pack() # pack函数默认side=TOP for color in colors: row=Frame(frm) lab = Label(row, text=color, relief=RIDGE, width=25) ent = Entry(row, bg=color, relief=SUNKEN, width=50) row.pack(side=TOP,expand=YES,fill=BOTH) lab.pack(side=LEFT,expand=YES,fill=BOTH) ent.pack(side=RIGHT,expand=YES,fill=BOTH) frm.pack(expand=YES,fill=BOTH)if __name__=='__main__': root=Tk() gridbox(root) packbox(root) Button(root,text='Quit',command=root.quit).pack(side=BOTTOM) mainloop()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值