Python基础入门学习笔记 076 GUI的终极选择:Tkinter13
布局管理器
布局管理器就是管理你的那些组件如何排列的家伙。Tkinter有三个布局管理器,分别是pack、grid和place
pack:按添加顺序排列组件
grid:按行/列形式排列组件
place:允许程序员指定组件的大小和位置
pack
实例1:生成一个Listbox组件并将它填充到root窗口
1 fr tkinter import * 2 3 root = Tk() 4 listbox = Listbox(root) 5 #fill选项是告诉窗口管理器该组件将怎样填充整个分配给它的空间 6 #BOTH表示同时横向和纵向扩展;X表示横向;Y表示纵向 7 #expand选项是告诉窗口管理器是否将父组件的额外空间也填满(任意拉伸窗口依旧会填满) 8 9 #默认情况下pack是将添加的组件依次纵向排列 10 listbox.pack(fill=BOTH,expand=True) 11 for i in range(10): 12 listbox.insert(END,str(i)) 13 14 mainloop()实例2:纵向排列,横向填充
1 fr tkinter import * 2 3 root = Tk() 4 #fill选项是告诉窗口管理器该组件将怎样填充整个分配给它的空间 5 #BOTH表示同时横向和纵向扩展;X表示横向;Y表示纵向 6 #expand选项是告诉窗口管理器是否将父组件的额外空间也填满 7 8 #默认情况下pack的side属性是将添加的组件依次纵向排列 9 Label(root, text="red", bg="red", fg="white").pack(fill=X) 10 Label(root, text="green", bg="green", fg="black").pack(fill=X) 11 Label(root, text="blue", bg="blue", fg="white").pack(fill=X) 12 13 mainloop()实例3:横向排列,纵向填充
1 fr tkinter import * 2 3 root = Tk() 4 #fill选项是告诉窗口管理器该组件将怎样填充整个分配给它的空间 5 #BOTH表示同时横向和纵向扩展;X表示横向;Y表示纵向 6 #expand选项是告诉窗口管理器是否将父组件的额外空间也填满 7 8 #将pack设置为横向排列 9 Label(root, text="red", bg="red", fg="white").pack(side=LEFT) 10 Label(root, text="green", bg="green", fg="black").pack(side=LEFT) 11 Label(root, text="blue", bg="blue", fg="white").pack(side=LEFT) 12 13 mainloop()grid
使用一个grid就可以简单地实现你用很多个框架和pack搭建起来的效果。使用grid排列组件,只需告诉它你想要将组件放置的位置(行row/列column)。
实例1:
1 fr tkinter import * 2 3 root = Tk() 4 5 #column默认值是0 6 #默认情况下组件会居中显示在对应的网格里 7 #Label(root,text="用户名").grid(row=0) 8 #Label(root,text="密码").grid(row=1) 9 #设置sticky=W使Label左对齐 10 Label(root,text="用户名").grid(row=0,sticky=W)#左对齐 11 Label(root,text="密码").grid(row=1,sticky=W) 12 13 Entry(root).grid(row=0,column=1) 14 Entry(root,show="*").grid(row=1,column=1) 15 16 mainloop()实例2:设置rowspan与columnspan实现跨行和跨列功能
1 fr tkinter import * 2 3 root = Tk() 4 5 #column默认值是0 6 #默认情况下组件会居中显示在对应的网格里 7 #Label(root,text="用户名").grid(row=0) 8 #Label(root,text="密码").grid(row=1) 9 #设置sticky=W使Label左对齐 10 #创建Label文本 11 Label(root,text="用户名").grid(row=0,sticky=W) 12 Label(root,text="密码").grid(row=1,sticky=W) 13 #创建输入 14 Entry(root).grid(row=0,column=1) 15 Entry(root,show="*").grid(row=1,column=1) 16 #插入Label图像 17 photo = PhotoImage(file="logo.gif") 18 #rowspan=2跨两行,边距5 19 Label(root,image=photo).grid(row=0,column=2,rowspan=2,padx=5,pady=5) 20 #columnspan=3跨三列(默认为居中显示),边距5 21 Button(text="提交",width=10).grid(row=2,columnspan=3,pady=5) 22 23 mainloop()place
通常情况下不建议使用place布局管理器
实例1:将子组件显示在父组件的正中间
1 fr tkinter import * 2 3 def callback(): 4 print("正中靶心") 5 root = Tk() 6 #relx和rely指定的是子组件相对于父组件的位置,范围是(00`1.0),0.5则表示一半,正中间 7 #anchor=CENTER表示正中显示 8 Button(root,text="点我",cmand=callback).place(relx=0.5,rely=0.5,anchor=CENTER) 9 10 mainloop()实例2:Button组件覆盖Label组件
1 fr tkinter import * 2 3 def callback(): 4 print("正中靶心") 5 root = Tk() 6 7 photo = PhotoImage(file="logo_big.gif") 8 Label(root,image=photo).pack() 9 #relx和rely指定的是子组件相对于父组件的位置,范围是(00`1.0),0.5则表示一半,正中间 10 Button(root,text="点我",cmand=callback).place(relx=0.5,rely=0.5,anchor=CENTER) 11 12 mainloop()实例3:
1 fr tkinter import * 2 3 root = Tk() 4 5 #relx和rely指定的是子组件相对于父组件的位置,范围是(00`1.0),0.5则表示一半,正中间 6 #relwidth和relheight选项指定相对父组件的尺寸 7 Label(root,bg="red").place(relx=0.5,rely=0.5,relheight=0.75,relwidth=0.75,anchor=CENTER) 8 Label(root,bg="yellow").place(relx=0.5,rely=0.5,relheight=0.5,relwidth=0.5,anchor=CENTER) 9 Label(root,bg="green").place(relx=0.5,rely=0.5,relheight=0.25,relwidth=0.25,anchor=CENTER) 10 11 mainloop()下一篇:Python基础入门学习笔记 066 GUI的终极选择:Tkinter3
Python
pla文件怎么看,pla文件用什么打开?
pl1文件怎么看,pl1文件用什么打开?
pl文件怎么看,pl文件用什么打开?
pl0文件怎么看,pl0文件用什么打开?
pkt文件怎么看,pkt文件用什么打开?
pkm文件怎么看,pkm文件用什么打开?
pks文件怎么看,pks文件用什么打开?
pka文件怎么看,pka文件用什么打开?
pkh文件怎么看,pkh文件用什么打开?
pkg文件怎么看,pkg文件用什么打开?