概述
前言
在设计GUI的时候可以使用三种方法包装盒定位各个组件在容器或窗口中的位置,这三个方法又称之为窗口控件配置管理员(Widget Layout Manager)
(1)pack方法
(2)grid方法
(3)place方法
实践一 pack()方法
虽然称为pack方法,其实在tkinter中这是一个类别,也是最常用的控件配置管理方法,使用的是相对位置的概念处理控件配置,语法如下:
pack(options,……)
options的参数可以是side,fill,padx/pady,ipadx/ipady,anchor
实践1.1 side参数
side参数可以垂直或水平配置控件,看示例:
import tkinter as tk
#作者昵称:不在纯真的秋天 ID:h20050621
root = tk.Tk()
root.title("小胡编程")
label1 = tk.Label(root,text="春天的希望 肖申克的救赎",
bg="yellow")
label2 = tk.Label(root,text="夏日沉沦 纳粹高徒",
bg="lightblue")
label3 = tk.Label(root,text="不在纯真的秋天 尸体",
bg="green")
label1.pack()
label2.pack()
label3.pack()
root.mainloop()
结果:
这是最简单的使用方式,默认的不加任何参数。也可以增加side参数设置组件的排列方式,参考数值:
TOP 这是默认值,由上到下排列
BOTTOM 由下到上排列
LEFT 由左到右排列
RIGHT 由右到左排列
注意:如果你的导入包方式是这样的:import tkinter as tk,则需要在参数前面加上(tk.)准确来说是as 后面跟的是什么就是什么加上一点。如果你没有加as 直接写的import tkinter 则需要加上
tkinter. 。但如果是from tkinter import * 则不需要加上前缀。
示例:
import tkinter as tk
#作者昵称:不在纯真的秋天 ID:h20050621
root = tk.Tk()
root.title("小胡编程")
label1 = tk.Label(root,text="春天的希望 肖申克的救赎",
bg="yellow")
label2 = tk.Label(root,text="夏日沉沦 纳粹高徒",
bg="lightblue")
label3 = tk.Label(root,text="不在纯真的秋天 尸体",
bg="green")
label1.pack(side=tk.BOTTOM)
label2.pack(side=tk.BOTTOM)
label3.pack(side=tk.BOTTOM)
root.mainloop()
结果:
其他结果就不展示了,建议自己上手实验。
实践1.2 padx/pady参数
在上一章Label中讲到这个参数,作用差不多,padx是设置水平间距,pady是设置垂直间距。
示例:
import tkinter as tk
#作者昵称:不在纯真的秋天 ID:h20050621
root = tk.Tk()
root.title("小胡编程")
label1 = tk.Label(root,text="春天的希望 肖申克的救赎",
bg="yellow")
label2 = tk.Label(root,text="夏日沉沦 纳粹高徒",
bg="lightblue")
label3 = tk.Label(root,text="不在纯真的秋天 尸体",
bg="green")
label1.pack(pady=10)
label2.pack(pady=10)
label3.pack()
root.mainloop()
结果:
示例2:
import tkinter as tk
#作者昵称:不在纯真的秋天 ID:h20050621
root = tk.Tk()
root.title("小胡编程")
label1 = tk.Label(root,text="春天的希望 肖申克的救赎",
bg="yellow")
label2 = tk.Label(root,text="夏日沉沦 纳粹高徒",
bg="lightblue")
label3 = tk.Label(root,text="不在纯真的秋天 尸体",
bg="green")
label1.pack(padx=50)
label2.pack(padx=50)
label3.pack(padx=50)
root.mainloop()
结果:
知识点:如果控件宽度不一致,则取最长的为代表。
实践1.3 ipadx/ipady
padx/pady是外间距,是控件到窗口的距离,而ipadx/ipady则是内间距,是控件内文字到控件边界的距离。
示例:
import tkinter as tk
#作者昵称:不在纯真的秋天 ID:h20050621
root = tk.Tk()
root.title("小胡编程")
label1 = tk.Label(root,text="春天的希望 肖申克的救赎",
bg="yellow")
label2 = tk.Label(root,text="夏日沉沦 纳粹高徒",
bg="lightblue")
label3 = tk.Label(root,text="不在纯真的秋天 尸体",
bg="green")
label1.pack(ipadx=50,ipady=50)
label2.pack(ipadx=50,ipady=50)
label3.pack(ipadx=50,ipady=50)
root.mainloop()
结果:
实践1.4 anchor
这个参数在Label中也讲过,控制文字在控件中的位置。
参照图:
在options中添加anchor=xxx
如果写小写,则需要加上引号,大写则不需用,但是大写需要注意:如果你的导入包方式是这样的:import tkinter as tk,则需要在参数前面加上(tk.)准确来说是as 后面跟的是什么就是什么加上一点。如果你没有加as 直接写的import tkinter 则需要加上tkinter. 。但如果是from tkinter import * 则不需要加上前缀。(小写不需要)
示例:
import tkinter as tk
#作者昵称:不在纯真的秋天 ID:h20050621
root = tk.Tk()
root.title("小胡编程")
label1 = tk.Label(root,text="春天的希望 肖申克的救赎",
bg="yellow")
label2 = tk.Label(root,text="夏日沉沦 纳粹高徒",
bg="lightblue",anchor="nw")
label3 = tk.Label(root,text="不在纯真的秋天 尸体",
bg="green",anchor=tk.SE)
label1.pack(ipadx=50,ipady=50)
label2.pack(ipadx=50,ipady=50)
label3.pack(ipadx=50,ipady=50)
root.mainloop()
结果:
实践1.5 fill
填充,参数是X或者Y
看例子
示例:
import tkinter as tk
#作者昵称:不在纯真的秋天 ID:h20050621
root = tk.Tk()
root.title("小胡编程")
label1 = tk.Label(root,text="春天的希望 肖申克的救赎",
bg="yellow")
label2 = tk.Label(root,text="夏日沉沦 纳粹高徒",
bg="lightblue")
label3 = tk.Label(root,text="不在纯真的秋天 尸体",
bg="green")
label1.pack(side=tk.LEFT,fill=tk.Y)
label2.pack(fill=tk.X)
label3.pack(fill=tk.X)
root.mainloop()
结果:
实践1.6 expand
前面讲了填充,但是如果我们拖动窗口后发现,控件并没有随着窗口的大小而改变,只要填上expand参数就可以了
看:
示例:
import tkinter as tk
#作者昵称:不在纯真的秋天 ID:h20050621
root = tk.Tk()
root.title("小胡编程")
label1 = tk.Label(root,text="春天的希望 肖申克的救赎",
bg="yellow")
label2 = tk.Label(root,text="夏日沉沦 纳粹高徒",
bg="lightblue")
label3 = tk.Label(root,text="不在纯真的秋天 尸体",
bg="green")
label1.pack(side=tk.LEFT,fill=tk.Y,expand=True)
label2.pack(fill=tk.X)
label3.pack(fill=tk.X)
root.mainloop()
结果:
实践1.7 pack()方法
slaves() 传回所有控件对象
info() 传回pack选项的对应值
forget() 隐藏控件,使用pack(option,……)复原
location(x,y) 传回次点是否在控件内,如果是,则传回坐标,不是,传回(-1,-1)
size() 传回控件大小
propagate(boolean) 参数是True表示父窗口大小有子控件决定,默认为True
小结:
关于Tkinter的pack()方法就到这里,下一章是grid()方法
为什么我不一次写完?因为我太懒了。好长的。有错请指出,谢谢
最后
以上就是成就泥猴桃为你收集整理的Python Tkinter的三种布局方式(pack部分高清无码版)3-1前言实践一 pack()方法小结:的全部内容,希望文章能够帮你解决Python Tkinter的三种布局方式(pack部分高清无码版)3-1前言实践一 pack()方法小结:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复