2022-10-08 09:47

Python图形界面自带tkinter模块的三种布局

码自答

Python

(746)

(0)

收藏

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()

image.png


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()

image.png


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()

    image.png



0条评论

点击登录参与评论