Los marcos son básicamente contenedores para otros widgets.
-
La ventana raíz de una aplicación es básicamente un marco.
-
Cada marco tiene su propio diseño de cuadrícula, por lo que los marcos cuadriculados para los widgets en cada marco funcionan de forma independiente.
-
Los widgets del marco son los que hacen que su aplicación sea modular. Puede enmarcar un grupo de widgets relacionados colocándolos en un widget compuesto. Aún mejor, puedes declarar una nueva clase para heredar, agregando tu propia interfaz. Este es un widget que oculta del mundo exterior un grupo de detalles de interacción relacionados.
Frame
Crear un nuevo miembro de marco en la ventana raíz o llamadas de marco:parent
w = Frame(parent, option, ...)
El constructor devuelve el nuevo widget. opciones:Frame
Tabla 19. 框架
Opciones de componentes
bg obackground |
El color de fondo del marco. Consulte la Sección 5.3, “Colores”. |
bd oborderwidth |
El ancho del borde del marco. El valor predeterminado es 0 (sin borde). Consulte la Sección 5.1, “Dimensiones” para conocer los valores permitidos. |
cursor |
Control de cursor para usar cuando el mouse está dentro del marco; consulte la Sección 5.8, “Cursores”. |
height |
Nuevo marco de tamaño vertical . Esto se ignora a menos que también invoque el marco; consulte la Sección 4.2, “Otros métodos de gestión de red”..grid_propagate(0) |
highlightbackground |
El color de enfoque se resalta cuando el marco no tiene enfoque. Consulte la Sección 53, “Enfoque: Enrutamiento de la entrada del teclado”. |
highlightcolor |
El color que se muestra en el enfoque se resalta cuando el marco tiene enfoque . |
highlightthickness |
El grosor del foco resalta. |
padx |
Normalmente, una A se ajusta perfectamente a su contenido. Agrega espacio dentro del marco en píxeles horizontales, configurando .Frame
padx= |
pady |
Se utiliza para agregar espacio vertical dentro del marco. véase más arriba.padx |
relief |
El relieve predeterminado para un marco es , lo que significa que el marco se combinará con su entorno. Para colocar un borde alrededor del marco, configúrelo en un valor positivo y establezca su relieve en uno de los tipos de relieve estándar; consulte la Sección 5.6, “Estilos de relieve”.tk.FLAT borderwidth |
takefocus |
Normalmente, la entrada no accede al foco del widget de marco (consulte la Sección 53, “Enfoque: enrutamiento de la entrada del teclado” de este tema para obtener una descripción general). Sin embargo, puede configurar si desea que el marco reciba entrada del teclado. Para manejar este tipo de entrada, necesita crear enlaces para eventos de teclado; consulte la Sección 54, “Eventos” y enlaces para obtener más información sobre eventos.takefocus=1 |
width |
El tamaño horizontal del nuevo marco. Consulte la Sección 5.1 “Dimensiones”. Este valor se ignora a menos que también invoque el marco; consulte la Sección 4.2, “Otros métodos de administración de red”..grid_propagate(0) |
12. AparatosLabel
Los widgets de etiquetas pueden tener el mismo estilo, mapa de bits o imagen. Cree un widget de llamada en la ventana o marco raíz:parent
w = tk.Label(parent, option, ...)
El constructor devuelve el nuevo widget. Las opciones incluyen:Label
Tabla 20. 标签
Opciones de widgets
activebackground |
El color de fondo que se mostrará cuando se pasa el cursor sobre el widget. |
activeforeground |
El color de primer plano se muestra cuando el mouse está sobre el widget. |
anchor |
Esta opción controla la posición del texto si el widget tiene más espacio del que necesita el texto. El valor predeterminado es que centra el texto en el espacio disponible. Para otros valores, consulte la Sección 5.5, “Puntos de anclaje”. Por ejemplo, si se usa, el texto se colocará en la esquina superior izquierda del espacio disponible.anchor=tk.CENTER anchor=tk.NW |
bg obackground |
El color de fondo del área de la etiqueta. Consulte la Sección 5.3, “Colores”. |
bitmap |
Al establecer esta opción en un valor de mapa de bits o etiqueta de objeto de imagen, se mostrará el gráfico. Consulte la Sección 5.7 “Mapas de bits” y la Sección 5.9 “ Imágenes”. |
bd oborderwidth |
El ancho del borde alrededor de la etiqueta; consulte la Sección 5.1, “Tamaños”. El valor predeterminado es <> píxeles. |
compound |
Si desea que este widget muestre texto y gráficos (mapas de bits o imágenes), la opción especifica la orientación relativa de los gráficos con respecto al texto. El valor puede ser cualquiera de , o . Por ejemplo, si se especifica, los gráficos se mostrarán debajo del texto.Label compound tk.LEFT tk.RIGHT tk.CENTER tk.BOTTOM tk.TOP compound=BOTTOM |
cursor |
La etiqueta del cursor que aparece cuando el mouse pasa sobre esta ubicación. Consulte la Sección 5.8 “Cursores”. |
disabledforeground |
El color de primer plano que se mostrará cuando el widget esté .state tk.DISABLED |
font |
Si desea mostrar texto en esta etiqueta (use la opción o, que especifica en qué fuente se mostrará el texto. Consulte la Sección 5.4, “Fuentes de tipo”.text textvariable font |
fg oforeground |
Si aquí se van a mostrar etiquetas de texto o mapa de bits, esta opción especifica el color del texto. Si se va a mostrar un mapa de bits, los colores son los siguientes. Aparecerá en la posición de 1 bit del mapa de bits. Consulte la Sección 5.3, “Colores”. |
height |
La altura de la etiqueta en filas (¡no en píxeles! Si esta opción no está configurada, la etiqueta tendrá un tamaño que se ajuste a su contenido. |
highlightbackground |
Color enfocado para resaltar cuando el widget no tiene foco . |
highlightcolor |
Color enfocado resaltado cuando el widget tiene foco . |
highlightthickness |
El grosor del foco resalta. |
image |
Para mostrar una imagen estática en un widget de etiqueta, configure esta opción del objeto de imagen. Consulte la Sección 5.9 “Imágenes”. |
justify |
Especifica cómo se alinean varias líneas de texto entre sí: izquierda, centro (valor predeterminado) o derecha.tk.LEFT tk.CENTER tk.RIGHT |
padx |
Se agregaron espacios adicionales a la izquierda y derecha del texto en el widget. El valor predeterminado es 1. |
pady |
Se agregó un widget de espacio adicional encima y debajo del texto. El valor predeterminado es 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
)
Desplaza el cuadro de lista de modo que el lado más a la izquierda tenga el ancho de la línea más larga fuera del cuadro de lista izquierdo. Las puntuaciones están en el rango [0, 1].fraction
.xview_scroll(
number
, what
)
Desplaza el cuadro de lista horizontalmente. Para los argumentos, utilice para desplazar caracteres o para desplazar páginas, es decir, según el ancho del cuadro de lista. El argumento indica cuánto desplazarse; los valores negativos mueven el texto hacia la derecha en el cuadro de lista, los valores positivos hacia la izquierda.what
tk.UNITS
tk.PAGES
number
.yview()
Para hacer que el cuadro de lista se pueda desplazar verticalmente, establezca la opción de la barra de desplazamiento vertical asociada en el método. Consulte la Sección 14.1, “Widget de cuadro de lista de desplazamiento”.command
.yview_moveto(
fraction
)
Desplácese por el cuadro de lista de modo que el ancho de la línea más larga quede más allá del lado izquierdo del cuadro de lista. Las puntuaciones están en el rango [0, 1].fraction
.yview_scroll(
number
, what
)
Desplaza el cuadro de lista verticalmente. Para los argumentos, utilice desplazamiento por fila o desplazamiento por página, es decir, por la altura del cuadro de lista. El argumento indica cuánto desplazarse; los valores negativos mueven el texto en el cuadro de lista hacia abajo y los valores positivos mueven el texto hacia arriba.what
tk.UNITS
tk.PAGES
number
14.1 Widget de desplazamientoListbox
Aquí hay un fragmento de código que ilustra la creación y vinculación de un cuadro de lista a barras de desplazamiento horizontales y verticales.
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