1 Message组件
Message 组件实际上是 Label 组件(只能显示单行)的变体,用于显示多行文本消息。Message 组件能够自动换行,并调整文本的尺寸使其适应给定的尺寸。
1.1 何时使用 Message 组件?
Message 组件用于显示简单的文本消息,通常你可以使用Label来代替。如果你希望使用多种字体来显示文本,那么应该使用 Text 组件。
1.2 用法
创建一个 Message 组件,所有你要做的事情就是指定要显示的文本内容。在必要的时候,该组件会自动换行
1.3 例子
from tkinter import *
root = Tk()
w1 = Message(root, text="这时一则消息",width=100)
w1.pack()
w2 = Message(root,text="这时一则大大大大大大消息",width=100)
w2.pack()
mainloop()
输出:

补充:
Message 组件用于显示简单的文本消息,通常你可以使用Label来代替。如果你希望使用多种字体来显示文本,那么应该使用 Text 组件。
1.4 参数
Message(master=None,**options)
master----父组件
**options----组件选项,下方各表格详细列举了各个选项的具体含义和用法:
选项 |
含义 |
activebackground |
设置当Spinbox处于ACTIVE状态下的背景颜色 |
background |
设置背景颜色 默认值由系统指定 |
bg |
跟background一样 |
borderwidth |
设置边框宽度 默认值是1或2像素 |
buttonbackground |
设置调节箭头的背景颜色 |
buttoncursor |
指定当鼠标在调节箭头上方的鼠标样式 |
buttondownrelief |
指定向下调节箭头的样式 默认值是RAISED 还可以设置为FLAT,SUNKEN,GROOVE和RIDGE |
buttonup |
指定向上调节箭头的样式 默认值是RAISED 还可以设置为FLAT,SUNKEN,GROOVE和RIDGE |
command |
指定一个函数,当用户点击调节箭头的时候将自动调用该函数 注意:当用户直接在输入框中输入数据时并不会触发该函数 |
cursor |
指定当鼠标在Spinbox上飘过的时候的鼠标样式 默认值由系统指定 |
disabledbackground |
设置当Spinbox处于DISABLED状态下的背景颜色 |
disabledforeground |
设置当Spinbox处于DISABLED状态下的前景颜色 |
exportselection |
指定选中的文本是否可以被复制到剪贴板 默认值是True 可以修改为False表示不允许复制文本 |
font |
指定Spinbox中文本的字体 默认值由系统指定 |
foreground |
设置前景(文本)颜色 默认值由系统指定 |
fg |
跟foreground一样 |
format |
使用该选项设置选择数值的样式(from_和to指定范围,用户自行输入的不算) 例如使用format=’%10.4f’表示显示的数值占10位,小数点后保留4位 |
from_ |
该选项和to选项共同指定一个范围内的数值 |
increment |
选项设置每次点击调节箭头递增递减的精度 |
highlightbackground |
指定当Spinbox没有获得焦点的时候高亮边框的颜色 默认值由系统指定,通常是标准背景颜色 |
highlightcolor |
指定当Spinbox获得焦点的时候高亮边框的颜色 默认值由系统指定 |
highlightthickness |
指定高亮边框的宽度 |
increment |
该选项指定当用户每次点击调节箭头的时候递增递减的精度 例如from_=1, to=10, increment=0.5,那么每次用户点击调节箭头的时候,输入框中的数字递增递减0.5 |
insertbackground |
指定输入光标的颜色 |
insertborderwidth |
指定输入光标的边框高度 如果被设置为非0值,光标样式会被设置为RAISED 提示:将insertborderwidth设置的大一点才能看到效果 |
insertofftime |
该选项控制光标的闪烁频率(灭) 单位是毫秒 |
insertontime |
该选项控制光标的闪烁频率(亮) 单位是毫秒 |
insertwidth |
指定光标的宽度 默认值是1或2像素 |
invalidcommand |
指定当输入框的内容“非法”时调用的函数 也就是指定当validateCommand选项指定的函数返回False时的函数 详见Entry组件 |
invcmd |
跟invalidcommand一样 |
justify |
定义如何对齐多行文本 使用LEFT,RIGHT或CENTER 默认值是CENTER |
readonlybackground |
设置当Spinbox处于“readonly”状态下的背景颜色 |
relief |
指定边框样式 默认值是FLAT 另外你还可以设置SUNKEN,RAISED,GROOVE或RIDGE |
repeatdelay |
该选项指定鼠标左键点击滚动条凹槽的响应时间 默认值是400(毫秒) |
repeatinterval |
该选项指定鼠标左键紧按滚动条凹槽的响应间隔 默认值是100(毫秒) |
selectbackground |
指定输入框的文本被选中时的背景颜色 默认值由系统指定 |
state |
Spinbox组件可以设置的状态:NORMAL,DISABLED或“readonly”(注意,这个是字符串。它跟DISABLED相似,但他支持选中和拷贝,只是不能修改,而DISABLED是完全禁止)默认值是NORMAL 注意,如果此选项设置为DISABLED或”readonly”,那么调用insert()和delete()方法都会被忽略 |
takefocus |
指定使用Tab键可以将焦点移动到输入框中 默认是开启的,可以将该选项设置为False避免焦点在此输入框中 |
textvariable |
指定一个与输入框内容相关联的Tkinter变量(通常是StringVar) 当输入框的内容发生改变时,该变量的值也会相应发生改变 |
to |
该选项和from_选项共同指定一个范围的数值 increment选项设置每次点击调节箭头递增递减的精度 |
validate |
该选项设置是否启用内容验证 |
validatecommand |
该选项指定一个验证函数,用于验证输入框内容是否合法 验证函数需要返回True或False表示验证结果 注意,该选项只有当validate的值非’none’时才有效 |
vcmd |
和validatecommand一样 |
values |
提供两个方法限定用户输入的内容,一种是通过from_和to选项设置范围,另一种则是将可选值以元组的形式赋给values选项 例如values=(“ds”, “sad”, “aesf”)则允许用户在这四个字符串中选择 width:设置输入框的宽度,以字符为单位 默认值是20 对于变宽字体来说,组件的实际宽度等于字体的平均宽度乘以width选项的值 |
wrap |
默认情况下(False),当输入框中的值是第一个(最后一个)的时候,再点击向上(向下)调节箭头,内容不会改变。 当该选项的值设置为True,则当输入框中的值是第一个(最后一个)的时候,再点击向上(向下)调节箭头,内容将回到最后一个(第一个)。 提示:其实就是开启循环的意思 |
xscrollcommand |
与scrollbar(滚动条)组件相关联 |
2 Spinbox组件
Spinbox 组件是 Entry 组件(能让用户随意的输入数据)的变体,用于从一些固定的值(可以是连续的,也可以是一些字符串的组合)中选取一个。
2.1 何时使用 Spinbox 组件?
Spinbox 组件通常用于在限定数字中选取的情况下替代普通的 Entry 组件。
注意:Spinbox 仅支持 Python3.2 和 Tk8.4 以上的版本
2.2 用法
Spinbox 组件跟 Entry 组件的用法非常相似,主要区别是使用 Spinbox 组件,你可以通过范围或者元组指定允许用户输入的内容。
2.3 例子
看两个实例:
from tkinter import *
root = Tk()
w = Spinbox(root,from_=0,to=10)
w.pack()
mainloop()
输出:

这里设置是1-10,也就是说在加到10或减到1都不会再往上或往下加或减了。
通过添加参数wrap=True,可以改变这个变化的是循环的,并且也可以给Spinbox的参数传递元组来改变值的变化。
如下所示:
from tkinter import *
root = Tk()
w = Spinbox(root,values=("Mondy","Tuesday","Wednesday","Thursday"),wrap=True)
w.pack()
mainloop()
效果图:

2.4 参数
Spinbox(master=None, **options)(class)
master–父组件
**options–组件选项,下面是各个选项的具体含义和用法:
选项 |
含义 |
activebackground |
设置当Spinbox处于ACTIVE状态下的背景颜色 |
background |
设置背景颜色 默认值由系统指定 |
bg |
跟background一样 |
borderwidth |
设置边框宽度 默认值是1或2像素 |
buttonbackground |
设置调节箭头的背景颜色 |
buttoncursor |
指定当鼠标在调节箭头上方的鼠标样式 |
buttondownrelief |
指定向下调节箭头的样式 默认值是RAISED 还可以设置为FLAT,SUNKEN,GROOVE和RIDGE |
buttonup |
指定向上调节箭头的样式 默认值是RAISED 还可以设置为FLAT,SUNKEN,GROOVE和RIDGE |
command |
指定一个函数,当用户点击调节箭头的时候将自动调用该函数 注意:当用户直接在输入框中输入数据时并不会触发该函数 |
cursor |
指定当鼠标在Spinbox上飘过的时候的鼠标样式 默认值由系统指定 |
disabledbackground |
设置当Spinbox处于DISABLED状态下的背景颜色 |
disabledforeground |
设置当Spinbox处于DISABLED状态下的前景颜色 |
exportselection |
指定选中的文本是否可以被复制到剪贴板 默认值是True 可以修改为False表示不允许复制文本 |
font |
指定Spinbox中文本的字体 默认值由系统指定 |
foreground |
设置前景(文本)颜色 默认值由系统指定 |
fg |
跟foreground一样 |
format |
使用该选项设置选择数值的样式(from_和to指定范围,用户自行输入的不算) 例如使用format=’%10.4f’表示显示的数值占10位,小数点后保留4位 |
from_ |
该选项和to选项共同指定一个范围内的数值 increment选项设置每次点击调节箭头递增递减的精度 |
highlightbackground |
指定当Spinbox没有获得焦点的时候高亮边框的颜色 默认值由系统指定,通常是标准背景颜色 |
highlightcolor |
指定当Spinbox获得焦点的时候高亮边框的颜色 默认值由系统指定 |
highlightthickness |
指定高亮边框的宽度 |
increment |
该选项指定当用户每次点击调节箭头的时候递增递减的精度 例如from_=1, to=10, increment=0.5,那么每次用户点击调节箭头的时候,输入框中的数字递增递减0.5 |
insertbackground |
指定输入光标的颜色 |
insertborderwidth |
指定输入光标的边框高度 如果被设置为非0值,光标样式会被设置为RAISED 提示:将insertborderwidth设置的大一点才能看到效果 |
insertofftime |
该选项控制光标的闪烁频率(灭) 单位是毫秒 |
insertontime |
该选项控制光标的闪烁频率(亮) 单位是毫秒 |
insertwidth |
指定光标的宽度 默认值是1或2像素 |
invalidcommand |
指定当输入框的内容“非法”时调用的函数 也就是指定当validateCommand选项指定的函数返回False时的函数 详见Entry组件 |
invcmd |
跟invalidcommand一样 |
justify |
定义如何对齐多行文本 使用LEFT,RIGHT或CENTER 默认值是CENTER |
readonlybackground |
设置当Spinbox处于“readonly”状态下的背景颜色 |
relief |
指定边框样式 默认值是FLAT 另外你还可以设置SUNKEN,RAISED,GROOVE或RIDGE |
repeatdelay |
该选项指定鼠标左键点击滚动条凹槽的响应时间 默认值是400(毫秒) |
repeatinterval |
该选项指定鼠标左键紧按滚动条凹槽的响应间隔 默认值是100(毫秒) |
selectbackground |
指定输入框的文本被选中时的背景颜色 默认值由系统指定 |
state |
Spinbox组件可以设置的状态:NORMAL,DISABLED或“readonly”(注意,这个是字符串。它跟DISABLED相似,但他支持选中和拷贝,只是不能修改,而DISABLED是完全禁止) 默认值是NORMAL 注意,如果此选项设置为DISABLED或”readonly”,那么调用insert()和delete()方法都会被忽略 |
takefocus |
指定使用Tab键可以将焦点移动到输入框中 默认是开启的,可以将该选项设置为False避免焦点在此输入框中 |
textvariable |
指定一个与输入框内容相关联的Tkinter变量(通常是StringVar) 当输入框的内容发生改变时,该变量的值也会相应发生改变 |
to |
该选项和from_选项共同指定一个范围的数值 increment选项设置每次点击调节箭头递增递减的精度 |
validate |
该选项设置是否启用内容验证 |
validatecommand |
该选项指定一个验证函数,用于验证输入框内容是否合法 验证函数需要返回True或False表示验证结果 注意,该选项只有当validate的值非’none’时才有效 |
vcmd |
和validatecommand一样 |
values |
提供两个方法限定用户输入的内容,一种是通过from_和to选项设置范围,另一种则是将可选值以元组的形式赋给values选项 例如values=(“ds”, “sad”, “aesf”)则允许用户在这四个字符串中选择 width:设置输入框的宽度,以字符为单位 默认值是20 对于变宽字体来说,组件的实际宽度等于字体的平均宽度乘以width选项的值 |
wrap |
默认情况下(False),当输入框中的值是第一个(最后一个)的时候,再点击向上(向下)调节箭头,内容不会改变。 当该选项的值设置为True,则当输入框中的值是第一个(最后一个)的时候,再点击向上(向下)调节箭头,内容将回到最后一个(第一个)。 提示:其实就是开启循环的意思 |
xscrollcommand |
与scrollbar(滚动条)组件相关联 如果你觉得用户输入的内容会超过该组件的输入框宽度,那么可以考虑设置该选项 |
3 PanedWindo组件
3.1 何时使用 PanedWindow 组件?
当你需要提供一个可供用户调整的多空间框架的时候,可以使用 PanedWindow 组件。PanedWindow 组件会为每一个子组件生成一个独立的窗格,用户可以自由调整窗格的大小。
3.2 例子
# 实验一
from tkinter import *
m = PanedWindow(orient=VERTICAL)
m.pack(fill=BOTH, expand=1)
top = Label(m, text='PanedWindow 1')
m.add(top)
bottom = Label(m, text='PanedWindow 2')
m.add(bottom)
# 拖拽鼠标的左键可以改变布局
# 中间有条隐藏的线,是二窗格
mainloop()
输出:

# 实验二 显示手柄和分割线
from tkinter import *
m1 = PanedWindow(showhandle=True, sashrelief=SUNKEN) # 默认是左右分布的
m1.pack(fill=BOTH, expand=1)
left = Label(m1, text='PanedWindow 1')
m1.add(left)
# 对比sashrelief=SUNKEN效果图
m2 = PanedWindow(orient=VERTICAL, showhandle=True)
m1.add(m2)
top = Label(m2, text='PanedWindow 2')
m2.add(top)
bottom = Label(m2, text='PanedWindow 3')
m2.add(bottom)
mainloop()
# 分割线上的类似正方形的东西就是handle
输出:

3.3 参数
PanedWindow(master=None, **options)(class)
master–父组件
**options–组件选项,下方详细列举了各个选项的具体含义和用法
选项 |
含义 |
background |
设置背景颜色 |
bg |
跟background一样 |
borderwidth |
设置边框宽度 |
bd |
跟borderwidth一样 |
cursor |
指定当鼠标在PanedWindow上飘过的时候的鼠标样式 默认值由系统指定 |
handlepad |
调节“手柄”的位置 例如orient=VERTICAL,则handlepad选项表示“分割线”上的手柄与左端的距离 默认值是8像素 |
handlesize |
设置“手柄”的尺寸(由于“手柄”必须是一个正方形,所以是设置正方形的边长) 默认值是8像素 |
height |
设置PanedWindow的高度 如果忽略该选项,则高度由子组件的尺寸决定 |
opaqueresize |
该选项定义了用户调整窗格尺寸的操作 如果该选项的值True(默认),窗格的尺寸随用户鼠标的拖拽而改变 如果该选项的值为False,窗格的尺寸在用户释放鼠标的时候才更新到新的位置 |
orient |
指定窗格的分布方式 可以是HORIZONTAL(横向分布)和VERTICAL(纵向分布) |
relief |
指定边框样式 默认值是FLAT 另外你还可以设置SUNKEN,RAISED,GROOVED或RIDGE |
sashpad |
设置每一条分割线到窗格间的间距 |
sashrelief |
设置分割线的样式 默认值是FLAT 另外你还可以设置SUNKEN,RAISED,GROOVED或RIDGE |
sashwidth |
设置分割线的宽度 |
showhandle |
设置是否显示调节窗格的手柄 默认值为False |
width |
设置PanedWindow的宽度 如果忽略该选项,则高度由子组件的尺寸决定 |
3.4 方法
add(child, **options)
选项 |
含义 |
after |
添加新的子组件到指定子组件后边 |
before |
添加新的子组件到指定子组件前边 |
height |
指定子组件的高度 |
minsize |
该选项控制窗格不得低于的值 如果orient=HORIZONTAL,表示窗格的宽度不得低于该选项的值 如果orient=VERTICAL,表示窗格的高度不得低于该选项的值 |
padx |
指定子组件的水平间距 |
pady |
指定子组件的垂直间距 |
sticky |
当窗格的尺寸大于子组件时,该选项指定子组件位于窗格的位置 可选的值有:E、S、W、N(东南西北)以及他们的组合值 |
width |
指定子组件的宽度 |
forget(child)
identify(x, y)
-
给定一个坐标 (x, y),返回该坐标所在的元素名称
-
如果该坐标位于子组件上,返回空字符串
-
如果该坐标位于分割线上,返回一个二元组 (n, ‘sash’),n 为 0 表示第一个分割线
-
如果该坐标位于手柄上,返回一个二元组 (n, ‘handle’),n 为 0 表示第一个手柄
panecget(child, option)
paneconfig(child, **option)