Python图形界面自带tkinter模块有三种布局:
1 pack布局
调用控件的pack()方法实现布局
如果不传递实参,会按照控件调用pack()方法的先后顺序,自上而下排列控件,控件的尺寸会以占用空间最小的方式。
一般pack()方法可设置的实参有fill和side等,fill表示允许控件向某个方向填充。fill的值可以X、Y或者BOTH。side表示该控件相对于下一个控件的方 位。side的值可以是TOP、LEFT、RIGHT或者BOTTOM。
from tkinter import * win = Tk() #初始化窗口对象 win.geometry("300x200") #注意是x 不是* #设置窗口的尺寸 win.title("万码学堂") lusername = Label(win,text="red",relief=GROOVE) lusername.pack() lcheckcode = Label(win,text="验证码",relief=GROOVE) lcheckcode.pack(fill=X) luserpass = Label(win,text="密码",relief=GROOVE); luserpass.pack(side=RIGHT) win.mainloop()
2 grid布局
将窗口虚拟一个二维表格,将控件布局到虚拟的表格中,由于控件的大小尺寸不一致,所以虚拟的表格每个单元格的大小尺寸也不一致,由控件的尺寸 决定单元格的尺寸。
grid()方法的参数:
column控件所在的列,第一列为0
row控件所在的行,第一行为0
columnspan该控件所跨越的列数
rowspan该控件所跨越的行数
ipadx,ipady控件的尺寸
padx,pady单元格的尺寸
from tkinter import * win = Tk() lusername = Label(win,text="用户名:",relief=GROOVE) lusername.grid(column=2,row=2) eusername = Entry(win) eusername.grid(column=0,row=1) luserpass = Label(win,text="密码:") luserpass.grid(column=1,row=0) euserpass = Entry(win) euserpass.grid(column=1,row=3,columnspan=2,ipadx=100) win.title("万码学堂") win.geometry("300x200") win.mainloop()
3 place布局
设置控件在窗口的绝对定位或者相对定位
plcae()方法的参数:
x,y控件在窗口的x和y的坐标,单位为像素
width,height空间的尺寸,单位为像素
relx,rely控件在窗口上的相对于窗口大小尺寸的位置,其值为0~1之间的小数,表示窗口尺寸的百分比
relwidth,relheight控件在窗口上的相对尺寸,其值也是0~1之间的小数
from tkinter import * win = Tk(); win.title("万码学堂") win.geometry("300x200"); #窗口尺寸 b1 = Button(win,text="确定") b1.place(x=10,y=20,width=100,height=30) #x y 绝对位置 width height高度 b2 = Button(win,text="取消") b2.place(relx=0.2,rely=0.7,relwidth=0.5,relheight=0.2) #相对 跟窗口大小有关系 随窗口大小的改变 而改变 win.mainloop()
0条评论
点击登录参与评论