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

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

最终界面如图所示:

原始图片

完整代码如下: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)

扩展效果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()

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();