复杂的可以使用第三方库tkintertable,超级复杂的可以使用第三方库tksheet。
或者可以使用第三方库tinui绘制表格。
1.简介。
Tkinter是Python唯一自带的GUI工具包,它背后使用的Tk组件库是开源世界中公认的标准。
Tkinter对于图形界面的布局管理有三大类:pack、grid、place
Pack()方法提供了选项来布局组件在界面中的位置,选项有:side、expand、fill、等
Grid()方法是采用行列来确定组件在界面中的位置,row是行号,column是列号。
Place()方法是通过组件在界面中的横纵坐标来固定位置。
2.分别使用pack和grid来布局同一组件。
程序如下:
information=['Name','Gender','Age']
def pack(parent):
entries1 = []
for i in information:
row=Frame(parent)
row.pack()
lab1=Label(row,text=i,relief=RAISED,width=7,padx=5,pady=5)
lab1.pack(side=LEFT)
ent1=Entry(row,relief=SUNKEN,width=30)
ent1.pack(side=LEFT,ipadx=5,ipady=5)
entries1.append(ent1)
def print1():
print([ent.get() for ent in entries1])
Button(parent,text='提交',command=print1).pack()
def grid(parent):
row=1
entries2=[]
for i in information:
lab2=Label(parent,text=i,width=7,relief=RAISED,padx=5,pady=5)
ent2=Entry(parent,width=30,relief=SUNKEN)
lab2.grid(row=row,column=0)
ent2.grid(row=row,column=1,ipadx=5,ipady=5)
row +=1
entries2.append(ent2)
def print2():
print([ent.get() for ent in entries2 ])
Button(parent,text='提交',command=print2).grid(columnspan=2)
frm1=Frame(root,bd=5,relief=RAISED)
frm1.pack()
Label(frm1,text='pack').pack()
pack(frm1)
frm2=Frame(root,bd=5,relief=RAISED)
Label(frm2,text='grid').grid(columnspan=2)
frm2.pack()
grid(frm2)
运行结果如下:
3.总结。
从运行结果界面上看两种布局的效果差不多,但通过程序可以看到,这个类似表格的界面使用pack布局的话要是两个组件布置在同一行中要使用一个容器把组件先绑定到一起来。而grid布局在这里就显得比pack方便多了,直接定义各组件在父组件中的行与列就行了。所以通过上面的比较可以得出,如果界面要求是表格类型的那么就使用grid来对组件进行布局会方便很多。
当你想要将一些相关的组件分为一组的时候,可以使用 LabelFrame 组件,比如一系列 Radiobutton (单选按钮)组件。
为组件分组,需要先创建一个 LabelFrame ,然后像往常一样将子组件添加进去。 LabelFrame 组件会自动绘制一个边框将子组件包围起来,并在它们上方显示一个文本标题。
你还可以通过选项定义如何绘制标签和边界,请看下边详细说明。
LabelFrame(master=None, **options) (class)
master -- 父组件
**options -- 组件选项,下方表格详细列举了各个选项的具体含义和用法:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)