【Tkinterシリーズ 05/15】ウィジェット(フレームラベルとリスト)

フレームは基本的には他のウィジェットの単なるコンテナです。

  • アプリケーションのルート ウィンドウは基本的にフレームです。

  • 各フレームには独自のグリッド レイアウトがあるため、各フレームのウィジェットのグリッド フレームは独立して機能します。

  • フレームワーク ウィジェットは、アプリをモジュール化するものです。関連するウィジェットのグループを複合ウィジェットに配置することで、それらのグループをフレーム化できます。さらに良いことに、独自のインターフェイスを追加して、継承元の新しいクラスを宣言できます。これは、関連するインタラクションの詳細のグループを外部から隠すウィジェットです。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 はそのコンテンツの周囲にぴったりと収まります。フレーム内に水平ピクセル単位でスペースを追加します。設定は です。FrameNpadx=N
pady フレーム内に垂直方向のスペースを追加するために使用されます。上記を参照。padx
relief フレームのデフォルトのレリーフは です。これは、フレームがその環境とブレンドされることを意味します。フレームの周囲に境界線を配置するには、それを正の値に設定し、エンボスを標準エンボス タイプのいずれかに設定します (セクション5.6「エンボス スタイル」を参照)。tk.FLATborderwidth
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.CENTERanchor=tk.NW
bgまたはbackground ラベル領域の背景色。セクション5.3「色」を参照してください。
bitmap このオプションをビットマップまたはイメージ オブジェクト タグと同じに設定すると、グラフィックが表示されます。セクション 5.7「ビットマップ」およびセクション 5.9「イメージ」を参照してください。
bdまたはborderwidth ラベルの周囲の境界線の幅。セクション5.1「サイズ」を参照してください。デフォルトは <> ピクセルです。
compound このウィジェットにテキストとグラフィックス (ビットマップまたはイメージ) の両方を表示する場合は、オプションでテキストに対するグラフィックスの相対方向を指定します。値は、 、 、または のいずれかです。たとえば、指定すると、テキストの下にグラフィックが表示されます。Labelcompoundtk.LEFTtk.RIGHTtk.CENTERtk.BOTTOMtk.TOPcompound=BOTTOM
cursor この位置にマウスを置いたときに表示されるカーソル ラベル。セクション5.8「カーソル」を参照してください。
disabledforeground ウィジェットが の場合に表示される前景色statetk.DISABLED
font このラベルにテキストを表示したい場合は ( または オプションを使用して、テキストが表示されるフォントを指定します。セクション5.4「フォントの入力」を参照してください。texttextvariablefont
fgまたはforeground テキストまたはビットマップのラベルをここに表示する場合、このオプションはテキストの色を指定します。ビットマップを表示する場合、色は次のようになります。ビットマップの 1 ビットの位置に表示されます。セクション5.3「色」を参照してください。
height ラベルの行単位の高さ(ピクセルではありません! このオプションが設定されていない場合、ラベルはその内容に合わせてサイズ変更されます。
highlightbackground  ウィジェットにフォーカスがないときに強調表示するフォーカスされた色。
highlightcolor  ウィジェットにフォーカスがある場合のに焦点を当てた強調表示。
highlightthickness フォーカスハイライトの太さ。
image ラベル ウィジェットに静止画像を表示するには、画像オブジェクトのこのオプションを設定します。セクション5.9「画像」を参照してください。
justify 複数行のテキストをどのように相互に配置するかを指定します: 左、中央 (デフォルト)、または右。tk.LEFTtk.CENTERtk.RIGHT
padx ウィジェット内のテキストの左右に余分なスペースを追加しました。デフォルト値は 1 です。
pady テキストの上下に追加のスペースウィジェットを追加しました。デフォルト値は 1 です。
relief 指定装饰性边框的外观 标签周围。默认值为 ;有关其他值,请参见第 5.6 节 “浮雕样式”。tk.FLAT
state 默认情况下,小部件位于 状态。设置此选项 以使其无响应 到鼠标事件。状态将为鼠标悬停在小部件上的时间。Entrytk.NORMALtk.DISABLEDtk.ACTIVE
takefocus 通常,焦点不会在小部件之间循环;请参见第 53 节 “焦点:路由键盘输入”。如果您希望此小部件 由焦点访问,设置.Labeltakefocus=1
text 在标签中显示一行或多行文本 小组件,将此选项设置为包含 发短信。内部换行符 () 将 强制换行。'\n'
textvariable 将标签构件中显示的文本从属到 类的控制变量 , 将此选项设置为该变量。请参见第 52 节 “控制变量:小部件背后的值”。StringVar
underline 您可以显示下划线 () 在第 n个字母下方 文本,从 0 开始计数,通过设置此选项 到 n。默认值为 ,表示否 强调。_underline=-1
width 标签的宽度(以字符为单位)(不是像素!如果 未设置此选项,标签的大小将调整为 适合其内容。
wraplength 您可以限制每行中的字符数 通过将此选项设置为所需的数字。这 默认值 0 表示线条将被断开 仅在换行符处。

13. 小部件LabelFrame

该小部件与“框架”小部件一样,是一个 空间容器 - 可以 包含其他小部件。但是,与小部件不同,小部件 允许您将标签显示为周围边框的一部分 该地区。LabelFrameFrameLabelFrame

下面是一个小部件的示例 包含两个小部件。请注意, 标签“重要控件”中断了 边境。此小部件说明了默认的浮雕(请参见第 5.6 节 “浮雕样式”)和 默认标签锚点,其 将标签放置在顶部的左侧 框架。LabelFrameButtonGROOVE'nw'

在 根窗口或框架 :LabelFrameparent

    w = tk.LabelFrame(parent, option, ...)

此构造函数返回新小部件。选项:LabelFrame

表 21.标签框架构件选项

bgbackground 要在内部显示的背景色 控件;请参见第 5.3 节 “颜色”。
bdborderwidth 围绕 的周长绘制的边框宽度 小部件;请参见第 5.1 节 “尺寸”。这 默认值为两个像素。
cursor 选择鼠标 在小部件上;请参见第 5.8 节 “游标”。
fgforeground 要使用的颜色 作为标签文本。
height 新框架的垂直尺寸。这将是 忽略,除非您也调用框架;请参见第 4.2 节 “其他网格管理方法”。.grid_propagate(0)
highlightbackground 焦点的颜色 当小组件没有焦点时突出显示。
highlightcolor 颜色 当小组件具有焦点时,焦点突出显示。
highlightthickness 焦点突出显示的厚度。
labelanchor

使用此选项可指定 小组件边框上的标注。默认 位置为 ,它放置 上边框左端的标签。对于 九个可能的标签位置,参考这个 图:'nw'

labelwidget 您可以使用任何小部件代替文本标签 通过传递该小部件作为值来传递标签 此选项。如果同时提供 和 选项,则会忽略该选项。labelwidgettexttext
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

此选项指定 活动线。它可能具有以下任何值:

'underline'

活动线带有下划线。这是 默认选项。

'dotbox'

活动线括在虚线中 四面线。

'none'

活动线没有特殊 外观。

bgbackground 列表框中的背景色。
bdborderwidth 列表框周围的边框宽度。 默认值为 5 像素。有关可能的值,请参见第 1.<> 节 “维度”。
cursor 鼠标悬停在 列表框。请参见第 5.8 节 “游标”。
disabledforeground 文本的颜色 在列表框中,当其为 .statetk.DISABLED
exportselection 默认情况下,用户可以选择带有 鼠标,所选文本将导出到 剪贴板。要禁用此行为,请使用 。exportselection=0
font 用于列表框中文本的字体。请参见第 5.4 节 “键入字体”。
fgforeground 用于列表框中文本的颜色。请参见第 5.3 节 “颜色”。
height 数(不是像素! 显示在列表框中。默认值为 10。
highlightbackground 当小部件执行时,焦点的颜色会突出显示 没有焦点。请参见第 53 节 “焦点:路由键盘输入”。
highlightcolor 小部件时焦点突出显示中显示的颜色 有重点
highlightthickness 焦点突出显示的厚度。
listvariable

连接到的 A 列表框中值的完整列表(请参见第 52 节 “控制变量:小部件后面的值”。StringVar

如果调用的方法 的,你会得到 返回窗体的字符串,其中每个字符串都是列表框的一行的内容。.get()listvariable"('v0', 'v1', ...)"vi

更改列表框中的整行集 立即调用 ,其中 是包含 行值之间有空格。.set(s)listvariables

例如,如果 是与列表框的选项关联的,则此调用 将列表框设置为包含三行:listConStringVarlistvariable

 listCon.set('ant bee cicada')

此调用将返回字符串:"('ant', 'bee', 'cicada')"

listCon.get()

relief 选择三维边框底纹效果。 缺省值为 。对于其他 值,请参见第 5.6 节 “浮雕样式”。tk.SUNKEN
selectbackground 用于显示所选文本的背景
selectborderwidth 要在选定边框周围使用的边框宽度 发短信。默认值为所选项目为 以纯色块显示;如果增加 ,则条目为 移得更远,所选条目将显示浮雕(请参见第 5.6 节 “浮雕样式”)。selectbackgroundselectborderwidthtk.RAISED
selectforeground 用于显示所选文本的前景色。
selectmode 确定可以选择多少项以及如何选择 鼠标拖动会影响选择:
  • tk.BROWSE:通常,您只能 从列表框中选择一行。如果你 单击某个项目,然后拖动到其他项目 行,选择将遵循 鼠。这是默认值。

  • tk.SINGLE:您只能选择 一行,你不能拖动 鼠标 - 单击按钮 1 的任意位置, 该行处于选中状态。

  • tk.MULTIPLE:您可以选择任何 一次行数。点击任何 切换是否选择线条。

  • tk.EXTENDED:您可以选择任何 通过单击 在第一行并拖动到最后一行 线。

state 默认情况下,列表框处于该状态。使列表框对鼠标无响应 事件中,将此选项设置为 。tk.NORMALtk.DISABLED
takefocus 通常,焦点将通过列表框跳动 部件。将此选项设置为 0 以获取微件 不在序列中。请参见第 53 节 “焦点:路由键盘输入”。
width 小部件的宽度(以字符为单位)(不是像素!这 宽度基于平均字符,因此一些 按比例字体表示的此长度的字符串可以 不合适。默认值为 20。
xscrollcommand 如果要允许用户滚动列表框 水平方向,可以将列表框小部件链接到 水平滚动条。将此选项设置为滚动条的方法。请参见第 14.1 节 “滚动列表框小部件”以获取更多信息 可滚动的列表框小组件。.set
yscrollcommand 如果要允许用户滚动列表框 垂直方向,可以将列表框小部件链接到 垂直滚动条。将此选项设置为滚动条的方法。请参见第 14.1 节 “滚动列表框小部件”。.set

一组特殊的索引表单用于许多 列表框对象上的方法:

  • 如果将索引指定为整数,则它引用 列表框中具有该索引的行,从 0 开始计数。

  • 索引是指 列表框。tk.END

  • 索引是指选定的 线。如果列表框允许多项选择,则 指上次选择的行。tk.ACTIVE

  • 表单的索引字符串引用最接近的行 坐标 (,) 相对 到小部件的左上角。'@x,y'xy

对象上的方法包括:Listbox

.activate(index)

选择由给定 指定的行。index

.bbox(index)

返回由 as 指定的行的边界框 一个 4 元组,其中左上角 框的像素位于 和 和 是 以像素为单位。返回的值仅包括 文本占用的行的一部分。index(xoffsetyoffsetwidthheight)(xoffsetyoffset)widthheightwidth

如果参数指定的行不是 可见,此方法返回 .如果 它部分可见,返回的边界框 可能延伸到可见区域之外。indexNone

.curselection()

返回一个元组,其中包含 选定的一个或多个元素,从 0 开始计数。如果 未选择任何内容,返回一个空元组。

.delete(firstlast=None)

删除其索引在范围内的行 [, ],包含(与通常的 Python 习语相反,其中删除 在最后一个索引附近停止),从 0 开始计数。如果 省略第二个参数,单行 索引将被删除。firstlastfirst

.get(firstlast=None)

返回一个元组,其中包含以下行的文本 索引从 到 ,包括 。 如果省略第二个参数,则返回文本 最接近 的行。firstlastfirst

.index(i)

如果可能,定位 列表框,以便包含索引的行位于顶部 的小部件。i

.insert(index, *elements)

在列表框中插入一个或多个新行之前 由 指定的行。如果要添加,请使用第一个参数 列表框末尾的新行。indextk.END

.itemcget(indexoption)

检索特定选项值之一 列表框中的行。有关选项值,请参见下文。如果给定的选项有 未为给定行设置,返回值 将是一个空字符串。itemconfig

.itemconfig(indexoption=value, ...)

更改指定行的配置选项 由。 选项名称包括:index

background

给定行的背景

foreground

的文本颜色 给定的行。

selectbackground

给定行的背景 当它被选中时。

selectforeground

给定行的文本颜色 当它被选中时。

.nearest(y)

返回最接近 y 坐标 y 相对于 列表框小组件。

.scan_dragto(xy)

见下文。scan_mark

.scan_mark(xy)

使用此方法实现快速扫描 稳定滚动 - 列表框。要得到这个 功能,将某些鼠标按钮事件绑定到处理程序 与电流一起调用 鼠标位置。然后将事件绑定到使用当前鼠标调用的处理程序 位置,列表框将以一定速率滚动 与位置之间的距离成正比 记录者和电流 位置。scan_mark<Motion>scan_dragtoscan_mark

.see(index)

调整列表框的位置,使行 引用 是可见的。index

.selection_anchor(index)

将“选择锚点”放在 参数选择的行。一旦这个 锚点已经放置,你可以用 特殊索引形式 .indextk.ANCHOR

例如,对于名为 的列表框 , 此序列将选择第 3、4 和 5 行:lbox

    lbox.selection_anchor(3)
    lbox.selection_set(tk.ANCHOR,5)

.selection_clear(firstlast=None)

取消选择索引和 (包括 )之间的所有线条。 如果省略第二个参数,则取消选择该行 带索引 .firstlastfirst

.selection_includes(index)

如果给定的行是 选中后,则返回 1。index

.selection_set(firstlast=None)

选择索引和 (包括 )之间的所有线条。 如果省略第二个参数,则选择该行 带索引 .firstlastfirst

.size()

返回列表框中的行数。

.xview()

若要使列表框水平滚动,请设置关联的 此方法的水平滚动条。请参见第 14.1 节 “滚动列表框小部件”。command

.xview_moveto(fraction)

リスト ボックスをスクロールして、左端が左のリスト ボックスの外側の最長行の幅になるようにします。スコアの範囲は [0, 1] です。fraction

.xview_scroll(numberwhat)

リストボックスを水平方向にスクロールします。引数には、文字をスクロールするか、ページをスクロールするか、つまりリスト ボックスの幅分を使用します。引数はスクロールする量を示します。負の値はテキストをリスト ボックスの右に移動し、正の値は左に移動します。whattk.UNITStk.PAGESnumber

.yview()

リスト ボックスを垂直方向にスクロール可能にするには、関連する垂直スクロール バーのオプションをメソッドに設定します。「スクロールリストボックスウィジェット」を参照してください。command

.yview_moveto(fraction)

リスト ボックスをスクロールして、最も長い行の幅がリスト ボックスの左側を超えるようにします。スコアの範囲は [0, 1] です。fraction

.yview_scroll(numberwhat)

リストボックスを垂直方向にスクロールします。引数には、行ごとにスクロールするか、ページごとに、つまりリスト ボックスの高さごとにスクロールします。引数はスクロール量を指定します。負の値を指定するとリスト ボックス内のテキストが下に移動し、正の値を指定するとテキストが上に移動します。whattk.UNITStk.PAGESnumber

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

 

おすすめ

転載: blog.csdn.net/gongdiwudu/article/details/132569351