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条评论
点击登录参与评论