tkinter之窗口控件配置和按钮Button的使用

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”才会换行。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值