Python:GUI之tkinter学习笔记2界面布局显示
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Python:GUI之tkinter学习笔记2界⾯布局显⽰
相关内容:
pack
介绍
常⽤参数
使⽤情况
常⽤函数
grid
介绍
常⽤参数
使⽤情况
常⽤函数
place
介绍
常⽤参数
使⽤情况
常⽤函数
⾸发时间:2018-03-04 14:20
pack:
介绍:
pack⼏何管理器按⾏或列打包⼩部件。
可以使⽤填充fill,展开expand和靠边side等选项来控制此⼏何体管理器。
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:外边距
适⽤情况:与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.pack(side=LEFT)
# btn.pack(side=RIGHT)
# btn.pack(side=(TOP,LEFT))
####fill
# btn.pack(fill=X)
# btn.pack(side=LEFT,fill=Y)
# btn.pack(fill=BOTH)
##expand
# btn1=Button(text=1,bg='green')
# btn2=Button(text=2,bg='yellow')
# btn1.pack(fill=X)
# btn2.pack(expand=True)
#anchor:
# btn1=Button(text=1,bg='green')
# btn2=Button(text=2,bg='yellow')
# btn1.pack(fill=X)
# btn2.pack(anchor=E)
#pack_propagete
# btn1=Button(text=1,bg='green')
# btn2=Button(text=2,bg='yellow')
# root.pack_propagate(0)
# btn1.pack()
# btn2.pack()
#pack_forget:
# import time,threading
# label=Label(text="警告!")
# label.pack()
# def run():
# start_time=time.time()
# while True:
# if time.time()-start_time>3:
# label.pack_forget()
# break
# t=threading.Thread(target=run)
# t.setDaemon(True)
# t.start()
root.mainloop()
grid:
介绍:grid是格⼦的意思,grid可以将控件区块式摆放.
常⽤参数:
row: ⾏号,区分不同控件是否处于同⼀⾏
column: 列号,区分不同控件是否处于同⼀列
sticky: 决定控件的贴靠⽅向,该选项从集合N,S,E,W [东南西北的意思],中取⼀个或多个值。
⽐如要将标签与左边框对
齐,可以使⽤W(西)
rowspan:⾏跨度,决定某个控件占的⾏数,默认⼀⾏
columnspan:列跨度,决定某个控件占的列数,默认⼀列
ipadx, ipady:内边距
padx,pady:外边距
适⽤情况:
设计对话框的时候特别⽅便
区块化摆放的时候
补充:
常⽤函数:
grid_forget :移除控件,但并没有进⾏摧毁,可以再次使⽤grid或其他⽅式来显⽰ [grid_remove有同样作⽤]
grid_propagete:由窗⼝调⽤来配置pack控件时窗⼝的⼤⼩,当flag=0时,那么窗⼝⼤⼩将不再仅仅包裹住所有控件,这时
候窗⼝的⾼度和宽度设置才可以⽣效
grid_slaves():以列表⽅式返回本组件的所有⼦组件对象。
from tkinter import *
root.title("我的窗⼝")
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,以作区分
label_pwd.grid(row=1,column=0)
# rowspan,columnspan
user.grid(row=0,column=1)
pwd.grid(row=1,column=1)
btn=Button(text="提交")
btn.grid(row=0,column=3,rowspan=2,columnspan=2,padx=5, pady=5)
# 下⾯主要是将第⼀列拉⼤来显⽰上⾯sticky的效果
v=IntVar()
check=Checkbutton(text="下次⾃动登录",variable=v,)
check.grid(row=2,column=0,sticky=W)
# _forget:
import time,threading
label=Label(text="欢迎登录!",bg='blue')
label.grid()
def run():
start_time=time.time()
while True:
if time.time()-start_time>3:
label.grid_forget()
break
t=threading.Thread(target=run)
t.setDaemon(True)
t.start()
root.mainloop()
place:
介绍:可以使⽤绝对的位置或相对位置来摆放控件。
常⽤参数:
x:控件在窗⼝中的x坐标
y:控件在窗⼝中的y坐标
relx,rely:与主窗⼝的相对位置,⽐如
relwidth,relheight:相对⼤⼩,⽐如height=0.5,width=0.5时控件占据窗⼝的四分之⼀⼤⼩适⽤情况:
⾃定义显⽰⽅式
将按钮定位在对话框中
补充:
常⽤函数:
place_forget():移除控件,但并没有进⾏摧毁,可以再次使⽤place或其他⽅式来显⽰
place_slaves():以列表⽅式返回本组件的所有⼦组件对象。
[slaves()具有同样功能]
place_info():返回place提供的选项所对应得值。
from tkinter import *
root=Tk()
root.geometry('100x100')
label=Label(text="⽤户名:",bg='green')
entry=Entry()
label.pack(fill=X)
#x,y
# entry.place(x=0,y=0)
#relx,rely
# entry.place(relx=0.3, rely=0.3)
# entry.place(relx=0.5, rely=0.5)
#relheight,relwidth
# entry.place(relx=0.5, rely=0.5,relheight=0.5,relwidth=0.5)
import time,threading
label2=Label(text="警告!",bg='blue')
label2.place(relx=0.2,rely=0.2)
def run():
start_time=time.time()
while True:
if time.time()-start_time>3:
label2.place_forget()
break
t=threading.Thread(target=run)
t.setDaemon(True)
t.start()
root.mainloop()
想要了解更多,可以参考tkinter的官⽅⽂档:。