上記の続き: [Tkinter シリーズ 04/15] インターフェイス ウィジェット (選択ボタン、行エディター)
11. ウィジェットFrame
フレームは基本的には他のウィジェットの単なるコンテナです。
-
アプリケーションのルート ウィンドウは基本的にフレームです。
-
各フレームには独自のグリッド レイアウトがあるため、各フレームのウィジェットのグリッド フレームは独立して機能します。
-
フレームワーク ウィジェットは、アプリをモジュール化するものです。関連するウィジェットのグループを複合ウィジェットに配置することで、それらのグループをフレーム化できます。さらに良いことに、独自のインターフェイスを追加して、継承元の新しいクラスを宣言できます。これは、関連するインタラクションの詳細のグループを外部から隠すウィジェットです。
Frame
ルート ウィンドウまたはフレーム呼び出しで新しいフレーム メンバーを作成すると、次のようになります。parent
w = Frame(parent, option, ...)
コンストラクターは新しいウィジェットを返します。オプション:Frame
表 19.框架
コンポーネントのオプション
bg またはbackground |
フレームの背景色です。セクション5.3「色」を参照してください。 |
bd またはborderwidth |
フレーム枠の幅。デフォルトは 0 (境界線なし) です。許可される値については、セクション5.1「ディメンション」を参照してください。 |
cursor |
マウスがフレーム内にあるときに使用するカーソルコントロール ( 「カーソル」を参照)。 |
height |
新しい縦型サイズの フレーム。これは、フレームワークも呼び出さない限り無視されます (セクション4.2「その他のグリッド管理方法」を参照)。.grid_propagate(0) |
highlightbackground |
フレームにフォーカスがない場合、フォーカスの色が強調表示されます。セクション 53「フォーカス: キーボード入力のルーティング」を参照してください。 |
highlightcolor |
フレームにフォーカスがある場合、フォーカス上に表示される色が強調表示されます。 |
highlightthickness |
フォーカスハイライトの太さ。 |
padx |
通常、A はそのコンテンツの周囲にぴったりと収まります。フレーム内に水平ピクセル単位でスペースを追加します。設定は です。Frame
padx= |
pady |
フレーム内に垂直方向のスペースを追加するために使用されます。上記を参照。padx |
relief |
フレームのデフォルトのレリーフは です。これは、フレームがその環境とブレンドされることを意味します。フレームの周囲に境界線を配置するには、それを正の値に設定し、エンボスを標準エンボス タイプのいずれかに設定します (セクション5.6「エンボス スタイル」を参照)。tk.FLAT borderwidth |
takefocus |
通常、入力はフレーム ウィジェットのフォーカスにアクセスしません ( 概要については、このトピックのセクション 53「フォーカス: キーボード入力のルーティング」を参照してください)。ただし、フレームがキーボード入力を受け取るかどうかを設定できます。このタイプの入力を処理するには、キーボード イベントのバインディングを作成する必要があります。イベントの詳細については、「イベント」とバインディングを参照してください。takefocus=1 |
width |
新しいフレームの水平サイズ。セクション 5.1「寸法」を参照してください。この値は、フレームワークも呼び出さない限り無視されます (セクション4.2「その他のグリッド管理メソッド」を参照)。.grid_propagate(0) |
12. ウィジェットLabel
ラベル ウィジェットは、同じスタイル、ビットマップまたはイメージにすることができます。ルート ウィンドウまたはフレームに吹き出しウィジェットを作成します。parent
w = tk.Label(parent, option, ...)
コンストラクターは新しいウィジェットを返します。オプションには次のものが含まれます。Label
表 20.标签
ウィジェットのオプション
activebackground |
ウィジェットの上にマウスを置いたときに表示される背景色。 |
activeforeground |
マウスをウィジェットの上に置くと、前景色が表示されます。 |
anchor |
このオプションは、ウィジェットにテキストが必要以上のスペースがある場合に、テキストの位置を制御します。デフォルトでは、テキストが利用可能なスペースの中央に配置されます。他の値については、「アンカーポイント」を参照してください。たとえば、これを使用すると、テキストは利用可能なスペースの左上隅に配置されます。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 |
このラベルにテキストを表示したい場合は ( または オプションを使用して、テキストが表示されるフォントを指定します。セクション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()
リスト ボックスを垂直方向にスクロール可能にするには、関連する垂直スクロール バーのオプションをメソッドに設定します。「スクロールリストボックスウィジェット」を参照してください。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