Python GUI编程学习笔记:tkinter界面布局显示详解
pack:
-
- 介绍:
- 常用参数:
- fill:填充分配给控件的空间,fill:X为填充X轴方向,Y为Y轴方向,BOTH为X+Y
- expand:先按普通标准来规定控件大小,如果后面窗口还剩下空间,那么会分给那些expand=True的控件,如图中是两个不同大小的按钮,其中2expand=True
,当使用expand=True时,side将不会生效!
- side:使控件靠窗口的指定方向并排,side可取值LEFT,RIGHT,TOP,BOTTOM.
- anchor:对齐方式,可取值“n”, “s”, “w”, “e”, “nw”, “sw”, “se”, “ne”, “center”(默认为” center”)
- ipadx, ipady:内边距
- padx,pady:外边距
- fill:填充分配给控件的空间,fill:X为填充X轴方向,Y为Y轴方向,BOTH为X+Y
- 适用情况:与gird相比,pack有一定的局限性,但在一些但很常见的情况下使用起来要容易得多:
- 将一个小部件放入一个框架(或任何其他容器小部件)中,并让它填充整个框架
- 将多个小部件放在一起
- 并排放置一些小部件
- 补充:
- 常用函数:
- :由窗口调用来配置pack控件时窗口的大小,当flag=0时,那么窗口大小将不再仅仅包裹住所有控件,这时候窗口的高度和宽度设置才可以生效
- pack_forget():移除控件,但并没有进行摧毁,可以再次使用pack或其他方式来显示
- pack_info():返回pack提供的选项所对应得值。
- pack_slaves():以列表方式返回本组件的所有子组件对象。
- 常用函数:
from tkinter import * root=Tk() # for i in range(10): ##side # btn = Button(text=i) # (side=LEFT) # (side=RIGHT) # (side=(TOP,LEFT)) ####fill # (fill=X) # (side=LEFT,fill=Y) # (fill=BOTH) ##expand # btn1=Button(text=1,bg='green') # btn2=Button(text=2,bg='yellow') # (fill=X) # (expand=True) #anchor: # btn1=Button(text=1,bg='green') # btn2=Button(text=2,bg='yellow') # (fill=X) # (anchor=E) #pack_propagete # btn1=Button(text=1,bg='green') # btn2=Button(text=2,bg='yellow') # (0) # () # () #pack_forget: # import time,threading # label=Label(text="警告!") # () # def run(): # start_time=() # while True: # if ()-start_time>3: # _forget() # break # t=(target=run) # (True) # () ()
grid:
from tkinter import * root=Tk() ("我的窗口") label_user=Label(text='用户名:',bg='green') label_pwd=Label(text='密码:',bg='green') user=Entry() pwd=Entry() # row,column,sticky label_user.grid(row=0,column=0,sticky=W) #一个有sticky,一个没有sticky,以作区分 (row=1,column=0) # rowspan,columnspan user.grid(row=0,column=1) (row=1,column=1) btn=Button(text="提交") (row=0,column=3,rowspan=2,columnspan=2,padx=5, pady=5) # 下面主要是将第一列拉大来显示上面sticky的效果 v=IntVar() check=Checkbutton(text="下次自动登录",variable=v,) (row=2,column=0,sticky=W) # _forget: import time,threading label=Label(text="欢迎登录!",bg='blue') () def run(): start_time=() while True: if ()-start_time>3: _forget() break t=(target=run) (True) () ()
place:
from tkinter import * root=Tk() ('100x100') label=Label(text="用户名:",bg='green') entry=Entry() (fill=X) #x,y # (x=0,y=0) #relx,rely # (relx=0.3, rely=0.3) # (relx=0.5, rely=0.5) #relheight,relwidth # (relx=0.5, rely=0.5,relheight=0.5,relwidth=0.5) #_forget: import time,threading label2=Label(text="警告!",bg='blue') (relx=) def run(): start_time=() while True: if ()-start_time>3: _forget() break t=(target=run) (True) () ()
THE END