续接上文:【Tkinter系列04/15】界面小部件(选择钮、行编辑器)
11. 小部件Frame
框架基本上只是其他小部件的容器。
-
应用程序的根窗口基本上是一个框架。
-
每个框架都有自己的网格布局,因此每个框架中小部件的网格化 框架独立工作。
-
框架小部件是使您的 应用模块化。您可以对一组相关的 通过将小部件放入复合小部件中,将它们放入 框架。更好的是,您可以声明一个新类 继承自 ,添加自己的 接口。这是隐藏 一组相关交互的详细信息 来自外界的小部件。
Frame
在根窗口或框架中创建新的框架构件 叫:parent
w = Frame(parent, option, ...)
构造函数返回新小部件。选项:Frame
表 19.框架
构件选项
bg 或background | 框架的背景色。请参见第 5.3 节 “颜色”。 |
bd 或borderwidth | 框架边框的宽度。默认值为 0(否) 边框)。有关允许的值,请参见第 5.1 节 “尺寸”。 |
cursor | 鼠标在框架内时使用的光标 控件;请参见第 5.8 节 “游标”。 |
height | 新垂直尺寸 框架。除非您也调用框架,否则这将被忽略;请参见第 4.2 节 “其他网格管理方法”。.grid_propagate(0) |
highlightbackground | 焦点的颜色 当帧没有焦点时加亮显示。请参见第 53 节 “焦点:路由键盘输入”。 |
highlightcolor | 颜色显示在 焦点加亮 当帧具有焦点时。 |
highlightthickness | 焦点突出显示的厚度。 |
padx | 通常,A 紧贴 围绕其内容。添加水平像素 框架内的空间,设置 .Frame
padx= |
pady | 用于在框架内添加垂直空间。 见上文。padx |
relief | 帧的默认浮雕是 ,这意味着帧将与其混合 环境。要在框架周围放置边框,请设置 其为正值 并将其浮雕设置为标准浮雕之一 类型;请参见第 5.6 节 “浮雕样式”。tk.FLAT borderwidth |
takefocus | 通常,输入不会访问框架小部件 焦点(有关概述,请参见第 53 节 “焦点:路由键盘输入” 的本主题)。但是,您可以设置是否希望框架 接收键盘输入。要处理此类输入,您需要 需要为键盘事件创建绑定; 有关事件的更多信息,请参见第 54 节 “事件”和 绑定。takefocus=1 |
width | 新框架的水平尺寸。请参见第 5.1 节 “尺寸”。此值为 忽略,除非您也调用框架;请参见第 4.2 节 “其他网格管理方法”。.grid_propagate(0) |
12. 小部件Label
标签微件可以在 相同的样式,或者位图或图像。创建标注微件 在根窗口或框架中:parent
w = tk.Label(parent, option, ...)
构造函数返回新小部件。选项包括:Label
表 20.标签
微件选项
activebackground | 背景颜色为 当鼠标悬停在小部件上时显示。 |
activeforeground | 前景色为 当鼠标悬停在小部件上时显示。 |
anchor | 此选项控制文本的位置 如果小部件的空间大于文本需要的空间。 缺省值为 ,这 使文本在可用空间中居中。对于其他 值,请参见第 5.5 节 “锚点”。为 例如,如果使用 , 文本将位于左上角 可用空间的一角。anchor=tk.CENTER anchor=tk.NW |
bg 或background | 标签区域的背景色。请参见第 5.3 节 “颜色”。 |
bitmap | 将此选项设置为等于位图或图像对象 标签将显示该图形。请参见第 5.7 节 “位图”和第 5.9 节 “图像”。 |
bd 或borderwidth | 标签周围边框的宽度;请参见第 5.1 节 “尺寸”。默认值为 <> 像素。 |
compound | 如果你想要这个小部件 同时显示文本和图形(位图) 或图像),选项 指定图形的相对方向 相对于文本。值可以是 、 、 或 中的任何一个。例如,如果指定 ,则图形将是 显示在文本下方。Label compound tk.LEFT tk.RIGHT tk.CENTER tk.BOTTOM tk.TOP compound=BOTTOM |
cursor | 鼠标悬停在此位置上时出现的光标 标签。请参见第 5.8 节 “游标”。 |
disabledforeground | 当小部件为 时要显示的前景色。state tk.DISABLED |
font | 如果要在此标签中显示文本(使用 or 选项,该选项指定 该文本将显示什么字体。请参见第 5.4 节 “键入字体”。text textvariable font |
fg 或foreground | 如果要在此显示文本或位图 标签,此选项指定文本的颜色。 如果要显示位图,则颜色如下 这将出现在 1 位的位置 位图。请参见第 5.3 节 “颜色”。 |
height | 标签的高度(以行为单位)(不是像素!如果未设置此选项,则 标签的大小将适合其内容。 |
highlightbackground | 焦点的颜色 当小组件没有焦点时突出显示。 |
highlightcolor | 颜色 当小组件具有焦点时,焦点突出显示。 |
highlightthickness | 焦点突出显示的厚度。 |
image | 要在标签微件中显示静态图像,请将 图像对象的此选项。请参见第 5.9 节 “图像”。 |
justify | 指定文本的多行方式 彼此对齐:左对齐、居中对齐(默认值)或右对齐。tk.LEFT tk.CENTER tk.RIGHT |
padx | 在文本的左侧和右侧添加了额外的空格 在小部件中。默认值为 1。 |
pady | 在文本的上方和下方添加了额外的空格 小部件。默认值为 1。 |
relief | 指定装饰性边框的外观 标签周围。默认值为 ;有关其他值,请参见第 5.6 节 “浮雕样式”。tk.FLAT |
state | 默认情况下,小部件位于 状态。设置此选项 以使其无响应 到鼠标事件。状态将为鼠标悬停在小部件上的时间。Entry tk.NORMAL tk.DISABLED tk.ACTIVE |
takefocus | 通常,焦点不会在小部件之间循环;请参见第 53 节 “焦点:路由键盘输入”。如果您希望此小部件 由焦点访问,设置.Label takefocus=1 |
text | 在标签中显示一行或多行文本 小组件,将此选项设置为包含 发短信。内部换行符 () 将 强制换行。'\n' |
textvariable | 将标签构件中显示的文本从属到 类的控制变量 , 将此选项设置为该变量。请参见第 52 节 “控制变量:小部件背后的值”。StringVar |
underline | 您可以显示下划线 () 在第 n 个字母下方 文本,从 0 开始计数,通过设置此选项 到 n 。默认值为 ,表示否 强调。_ underline=-1 |
width | 标签的宽度(以字符为单位)(不是像素!如果 未设置此选项,标签的大小将调整为 适合其内容。 |
wraplength | 您可以限制每行中的字符数 通过将此选项设置为所需的数字。这 默认值 0 表示线条将被断开 仅在换行符处。 |
13. 小部件LabelFrame
该小部件与“框架”小部件一样,是一个 空间容器 - 可以 包含其他小部件。但是,与小部件不同,小部件 允许您将标签显示为周围边框的一部分 该地区。LabelFrame
Frame
LabelFrame
下面是一个小部件的示例 包含两个小部件。请注意, 标签“重要控件”中断了 边境。此小部件说明了默认的浮雕(请参见第 5.6 节 “浮雕样式”)和 默认标签锚点,其 将标签放置在顶部的左侧 框架。LabelFrame
Button
GROOVE
'nw'
在 根窗口或框架 :LabelFrame
parent
w = tk.LabelFrame(parent, option, ...)
此构造函数返回新小部件。选项:LabelFrame
表 21.标签框架
构件选项
bg 或background | 要在内部显示的背景色 控件;请参见第 5.3 节 “颜色”。 |
bd 或borderwidth | 围绕 的周长绘制的边框宽度 小部件;请参见第 5.1 节 “尺寸”。这 默认值为两个像素。 |
cursor | 选择鼠标 在小部件上;请参见第 5.8 节 “游标”。 |
fg 或foreground | 要使用的颜色 作为标签文本。 |
height | 新框架的垂直尺寸。这将是 忽略,除非您也调用框架;请参见第 4.2 节 “其他网格管理方法”。.grid_propagate(0) |
highlightbackground | 焦点的颜色 当小组件没有焦点时突出显示。 |
highlightcolor | 颜色 当小组件具有焦点时,焦点突出显示。 |
highlightthickness | 焦点突出显示的厚度。 |
labelanchor | 使用此选项可指定 小组件边框上的标注。默认 位置为 ,它放置 上边框左端的标签。对于 九个可能的标签位置,参考这个 图: |
labelwidget | 您可以使用任何小部件代替文本标签 通过传递该小部件作为值来传递标签 此选项。如果同时提供 和 选项,则会忽略该选项。labelwidget text text |
padx | 使用此选项可在内部添加其他填充 微件框架的左侧和右侧。 该值以像素为单位。 |
pady | 使用此选项可在内部添加其他填充 小部件框架的顶部和底部。这 值以像素为单位。 |
relief | 此选项控制边框的外观 在小部件的外部周围。默认 风格是 ;对于其他值, 请参见第 5.6 节 “浮雕样式”。tk.GROOVE |
takefocus | 通常,小部件不会获得焦点;供应 要使此选项的值 焦点遍历序列的小组件部分。 有关更多信息,请参见第 53 节 “焦点:路由键盘输入”。True |
text | 标签的文本。 |
width | 新框架的水平尺寸。这将是 忽略,除非您也调用框架;请参见第 4.2 节 “其他网格管理方法”。.grid_propagate(0) |
标签小部件没有特殊方法,除了 常见的(参见第 26 节 “通用小部件方法”)。
14. 小部件Listbox
(
14. 列表框小部件 (anzeljg.github.io))
列表框小部件的用途是显示一组 文本行。通常,它们旨在允许 用户从列表中选择一个或多个项目。所有 文本行使用相同的字体。如果你需要什么 更像是一个文本编辑器,请参见第 24 节 “文本小部件”。
在根窗口中创建新的列表框小组件,或 框架:parent
w = tk.Listbox(parent, option, ...)
此构造函数返回新小部件。选项:Listbox
表 22.列表框
小组件选项
activestyle | 此选项指定 活动线。它可能具有以下任何值:
活动线带有下划线。这是 默认选项。
活动线括在虚线中 四面线。
活动线没有特殊 外观。 |
bg 或background | 列表框中的背景色。 |
bd 或borderwidth | 列表框周围的边框宽度。 默认值为 5 像素。有关可能的值,请参见第 1.<> 节 “维度”。 |
cursor | 鼠标悬停在 列表框。请参见第 5.8 节 “游标”。 |
disabledforeground | 文本的颜色 在列表框中,当其为 .state tk.DISABLED |
exportselection | 默认情况下,用户可以选择带有 鼠标,所选文本将导出到 剪贴板。要禁用此行为,请使用 。exportselection=0 |
font | 用于列表框中文本的字体。请参见第 5.4 节 “键入字体”。 |
fg 或foreground | 用于列表框中文本的颜色。请参见第 5.3 节 “颜色”。 |
height | 行数(不是像素! 显示在列表框中。默认值为 10。 |
highlightbackground | 当小部件执行时,焦点的颜色会突出显示 没有焦点。请参见第 53 节 “焦点:路由键盘输入”。 |
highlightcolor | 小部件时焦点突出显示中显示的颜色 有重点。 |
highlightthickness | 焦点突出显示的厚度。 |
listvariable | 连接到的 A 列表框中值的完整列表(请参见第 52 节 “控制变量:小部件后面的值”。 如果调用的方法 的,你会得到 返回窗体的字符串,其中每个字符串都是列表框的一行的内容。 更改列表框中的整行集 立即调用 ,其中 是包含 行值之间有空格。 例如,如果 是与列表框的选项关联的,则此调用 将列表框设置为包含三行: 此调用将返回字符串: |
relief | 选择三维边框底纹效果。 缺省值为 。对于其他 值,请参见第 5.6 节 “浮雕样式”。tk.SUNKEN |
selectbackground | 用于显示所选文本的背景色。 |
selectborderwidth | 要在选定边框周围使用的边框宽度 发短信。默认值为所选项目为 以纯色块显示;如果增加 ,则条目为 移得更远,所选条目将显示浮雕(请参见第 5.6 节 “浮雕样式”)。selectbackground selectborderwidth tk.RAISED |
selectforeground | 用于显示所选文本的前景色。 |
selectmode | 确定可以选择多少项以及如何选择 鼠标拖动会影响选择:
|
state | 默认情况下,列表框处于该状态。使列表框对鼠标无响应 事件中,将此选项设置为 。tk.NORMAL tk.DISABLED |
takefocus | 通常,焦点将通过列表框跳动 部件。将此选项设置为 0 以获取微件 不在序列中。请参见第 53 节 “焦点:路由键盘输入”。 |
width | 小部件的宽度(以字符为单位)(不是像素!这 宽度基于平均字符,因此一些 按比例字体表示的此长度的字符串可以 不合适。默认值为 20。 |
xscrollcommand | 如果要允许用户滚动列表框 水平方向,可以将列表框小部件链接到 水平滚动条。将此选项设置为滚动条的方法。请参见第 14.1 节 “滚动列表框小部件”以获取更多信息 可滚动的列表框小组件。.set |
yscrollcommand | 如果要允许用户滚动列表框 垂直方向,可以将列表框小部件链接到 垂直滚动条。将此选项设置为滚动条的方法。请参见第 14.1 节 “滚动列表框小部件”。.set |
一组特殊的索引表单用于许多 列表框对象上的方法:
-
如果将索引指定为整数,则它引用 列表框中具有该索引的行,从 0 开始计数。
-
索引是指 列表框。
tk.END
-
索引是指选定的 线。如果列表框允许多项选择,则 指上次选择的行。
tk.ACTIVE
-
表单的索引字符串引用最接近的行 坐标 (,) 相对 到小部件的左上角。
'@
x
,y
'x
y
对象上的方法包括:Listbox
.activate(
index
)
选择由给定 指定的行。index
.bbox(
index
)
返回由 as 指定的行的边界框 一个 4 元组,其中左上角 框的像素位于 和 和 是 以像素为单位。返回的值仅包括 文本占用的行的一部分。index
(
xoffset
, yoffset
, width
, height
)(
xoffset
, yoffset
)width
height
width
如果参数指定的行不是 可见,此方法返回 .如果 它部分可见,返回的边界框 可能延伸到可见区域之外。index
None
.curselection()
返回一个元组,其中包含 选定的一个或多个元素,从 0 开始计数。如果 未选择任何内容,返回一个空元组。
.delete(
first
, last
=None)
删除其索引在范围内的行 [, ],包含(与通常的 Python 习语相反,其中删除 在最后一个索引附近停止),从 0 开始计数。如果 省略第二个参数,单行 索引将被删除。first
last
first
.get(
first
, last
=None)
返回一个元组,其中包含以下行的文本 索引从 到 ,包括 。 如果省略第二个参数,则返回文本 最接近 的行。first
last
first
.index(
i
)
如果可能,定位 列表框,以便包含索引的行位于顶部 的小部件。i
.insert(
index
, *elements
)
在列表框中插入一个或多个新行之前 由 指定的行。如果要添加,请使用第一个参数 列表框末尾的新行。index
tk.END
.itemcget(
index
, option
)
检索特定选项值之一 列表框中的行。有关选项值,请参见下文。如果给定的选项有 未为给定行设置,返回值 将是一个空字符串。itemconfig
.itemconfig(
index
, option
=value
, ...)
更改指定行的配置选项 由。 选项名称包括:index
background
给定行的背景色。
foreground
的文本颜色 给定的行。
selectbackground
给定行的背景色 当它被选中时。
selectforeground
给定行的文本颜色 当它被选中时。
.nearest(
y
)
返回最接近 y 坐标 y
相对于 列表框小组件。
.scan_dragto(
x
, y
)
见下文。scan_mark
.scan_mark(
x
, y
)
使用此方法实现快速扫描 稳定滚动 - 列表框。要得到这个 功能,将某些鼠标按钮事件绑定到处理程序 与电流一起调用 鼠标位置。然后将事件绑定到使用当前鼠标调用的处理程序 位置,列表框将以一定速率滚动 与位置之间的距离成正比 记录者和电流 位置。scan_mark
<Motion>
scan_dragto
scan_mark
.see(
index
)
调整列表框的位置,使行 引用 是可见的。index
.selection_anchor(
index
)
将“选择锚点”放在 参数选择的行。一旦这个 锚点已经放置,你可以用 特殊索引形式 .index
tk.ANCHOR
例如,对于名为 的列表框 , 此序列将选择第 3、4 和 5 行:lbox
lbox.selection_anchor(3)
lbox.selection_set(tk.ANCHOR,5)
.selection_clear(
first
, last
=None)
取消选择索引和 (包括 )之间的所有线条。 如果省略第二个参数,则取消选择该行 带索引 .first
last
first
.selection_includes(
index
)
如果给定的行是 选中后,则返回 1。index
.selection_set(
first
, last
=None)
选择索引和 (包括 )之间的所有线条。 如果省略第二个参数,则选择该行 带索引 .first
last
first
.size()
返回列表框中的行数。
.xview()
若要使列表框水平滚动,请设置关联的 此方法的水平滚动条。请参见第 14.1 节 “滚动列表框小部件”。command
.xview_moveto(
fraction
)
滚动列表框,使最左侧的 其最长线的宽度在左侧之外 列表框。分数在 [0,1] 范围内。fraction
.xview_scroll(
number
, what
)
水平滚动列表框。对于论点, 使用任一方式滚动 字符,或滚动 页,即按列表框的宽度。参数告诉要滚动多少;负值 在列表框中将文本向右移动, 正值向左。what
tk.UNITS
tk.PAGES
number
.yview()
若要使列表框可垂直滚动,请将关联的垂直滚动条的选项设置为 方法。请参见第 14.1 节 “滚动列表框小部件”。command
.yview_moveto(
fraction
)
滚动列表框,使 其最长线的宽度在左侧之外 列表框。分数在 [0,1] 范围内。fraction
.yview_scroll(
number
, what
)
垂直滚动列表框。对于论点, 使用任一按行滚动, 或按页面滚动,即 按列表框的高度。论点 告诉要滚动多少;负值移动 列表框中的文本向下,以及正值 向上移动文本。what
tk.UNITS
tk.PAGES
number
14.1. 滚动小部件Listbox
这是一个代码片段,说明了创建和 将列表框链接到水平和垂直 滚动条。
self.yScroll = tk.Scrollbar(self, orient=tk.VERTICAL)
self.yScroll.grid(row=0, column=1, sticky=tk.N+tk.S)
self.xScroll = tk.Scrollbar(self, orient=tk.HORIZONTAL)
self.xScroll.grid(row=1, column=0, sticky=tk.E+tk.W)
self.listbox = tk.Listbox(self,
xscrollcommand=self.xScroll.set,
yscrollcommand=self.yScroll.set)
self.listbox.grid(row=0, column=0, sticky=tk.N+tk.S+tk.E+tk.W)
self.xScroll['command'] = self.listbox.xview
self.yScroll['command'] = self.listbox.yview