文章目录
3.窗口控件配置
3.1 Widget Layout Manager - pack方法
pack是最常使用的控件配置管理方法,它是使用相对位置的概念处理Widget控件配置,至于控件的正确位置则是由pack方法自动完成。pack方法的语法格式如下。
pack(options,...)
options参数可以是side、fill、padx/pady、ipadx/ipady、anchor。
side参数
TOP:这是默认值,由上往下排列。
BOTTOM:由下往上排列。
LEFT:由左往右排列。
RIGHT:由右往左排列。
padx/pady参数
可以使用padx/pady参数设定控件边界与容器(可想成窗口边界)的距离或是控件边界间的距离。在默认环境下窗口控件间的距离是1像素,如果希望有适度间距,可以设置参数padx/pady,代表水平间距/垂直间距,可以分别在组件间增加间距。
ipadx/ipady参数
ipadx参数可以控制标签文字与标签容器的x轴间距,ipady参数可以控制标签文字与标签容器的y轴间距。
anchor参数
这个参数可以设定Widget控件在窗口中的位置,控件内容在控件区域的位置设置(实际中是指标签文字在标签区域的位置)。
from tkinter import *
tk = Tk()
tk.geometry("200x150")
oklabel = Label(tk, text="OK", # 标签内容是0K
font="Times 20 bold", # Times字型20粗体
fg="white", bg="blue") # 蓝底白字
oklabel.pack(anchor=S, side=RIGHT, # 从右开始在S方向设置
padx=10, pady=10) # x和y轴间距都是10
nolabel = Label(tk, text="NO", # 标签内容是NO
font="Times 20 bold", # Times字型20粗体
fg="white", bg="red") # 蓝底白字
nolabel.pack(anchor=S, side=RIGHT, # 从右开始在S方向设置
pady=10) # y轴间距都是10
tk.mainloop()
fill参数
fill参数的主要功能是告诉pack管理程序,设置控件填满所分配容器区间的方式,如果是fill=X表示控件可以填满所分配空间的X轴不留白,如果是fill=Y表示控件可以填满所分配空间的Y轴不留白,如果是fill=BOTH表示控件可以填满所分配空间的X轴和Y轴。fill默认值是NONE,表示保持原大小。
如果所分配容器区间已经满了,则使用此fill参数将不会有任何作用。fill参数在使用上仍有些复杂,如果要设计复杂的Widget控件布局,建议使用grid方法。
expand参数
expand参数可设定Widget控件是否填满额外的父容器空间,默认是False(或是0),表示不填满,如果是True(或是1)表示填满。
3.2 Widget Layout Manager - grid方法
grid的语法格式如下:
grid(options,...)
options参数可以是row、column、padx/pady、rowspan、columnspan、sticky。
row和column
from tkinter import *
tk = Tk()
label1 = Label(tk, text="左上",
font="Times 20 bold", # Times字型20粗体
fg="white", bg="blue", width=15) # 蓝底白字
label2 = Label(tk, text="左下",
font="Times 20 bold", # Times字型20粗体
fg="white", bg="red", width=15) # 蓝底白字
label3 = Label(tk, text="右下",
font="Times 20 bold", # Times字型20粗体
fg="white", bg="red", width=15) # 蓝底白字
label1.grid(row=0, column=0)
label2.grid(row=1, column=0)
label3.grid(row=1, column=1)
tk.mainloop()
执行结果如下
columnspan参数
可以设定控件在column方向的合并数量。比如一个标签占用两个表格所占用的位置,设参数columnspan=2。
rowspan参数
可以设定控件在row方向的合并数量。
padx和pady参数
与pack用法相同。
sticky参数
这个参数的功能类似anchor,但是只可以设定N/S/W/E,即上/下/左/右对齐。原则上相同column的Widget控件,如果宽度不同时,grid方法会保留最宽的控件当作基准,这时比较短的控件会居中对齐。
sticky参数的可能值N/S/W/E也可以组合使用。
sticky=N+S:可以拉长高度让控件在顶端和底端对齐。
sticky=W+E:可以拉长宽度让控件在左边和右边对齐。
sticky=N+S+E:可以拉长高度让控件在顶端和底端对齐,同时切齐右边。
sticky=N+S+W:可以拉长高度让控件在顶端和底端对齐,同时切齐左边。
sticky=N+S+W+E:可以拉长高度让控件在顶端和底端对齐,同时切齐左右边。
3.3 Widget Layout Manager - place方法
这是使用直接指定方式将Widget控件放在容器(可想成窗口)中的方法。
参数可以是height/width、relx/rely、x/y、relheight/relwidth、bordermode、anchor。
x/y参数
窗口显示区的左上角是(x=0,y=0), x是向右递增,y是向下递增。
width/height参数
有时候在设计窗口应用程序时,所预留的空间有限,如果想要将图片插入窗口内,却担心图片太大,可以在插入图片时同时设定图片的大小,此时可以使用width/height参数,这两个参数可以直接设定Widget控件的实体大小。
relx/rely参数与relwidth/relheight参数
相对位置
relx/rely可以设置相对于父容器(可想成父窗口)的位置,relwidth/relheight设置相对大小。这个相对位置与相对大小是相对于父窗口而言,其值为0.0 ~ 1.0。
4.按钮Button
Button()方法的第一个参数是父对象,表示这个功能按钮将建立在哪一个窗口内。下列是Button( )方法内其他常用的options参数。
(1)borderwidth或bd:边界宽度默认是两个像素。
(2)bg或background:背景色彩。
(3)command:单击功能按钮时,执行此方法。当需要传参给此方法,最好使用Lambda表达式。
(4)cursor:当鼠标光标移至按钮上时的形状。
(5)fg或foreground:前景色彩。
(6)font:字形。
(7)height:高,单位是字符高。
(8)highlightbackground:当功能按钮取得焦点时的背景颜色。
(9)highlightcolor:当功能按钮取得焦点时的颜色。
(10)image:功能钮上的图像。
(11)justify:当有多行文字时,最后一行文字的对齐方式。
(12)padx:默认是1,可设置功能按钮与文字的间隔。
(13)pady:默认是1,可设置功能按钮的上下间距。
(14)relief:默认是relief=FLAT,可由此控制文字外框。
(15)state:默认是state=NORMAL,若设置为DISABLED则以灰阶显示功能按钮,表示暂时无法使用。
(16)text:功能按钮名称。
(17)underline:可以设置第几个文字有下画线,从0开始算起,默认是-1表示无下画线。
(18)width:宽,单位是字符宽。
(19)wraplength:限制每行的文字数,默认是0,表示只有“\n”才会换行。