GUI

Python Tkinter widgets 基本的なウィジェット(2) Label

ラベルは、テキストや画像を表示するウィジェットで、他の操作は行わない。コントロールやUIの他の部分を識別したり、テキストによるフィードバックや結果を提示するのに使用される。設定オプションによって表示方法が変えられる。

label = ttk.Label(parent, text='Label Text')

テキストを表示

最も一般的に使用される。表示されるテキストを設定オプションで変更できる。ラベル作成後にも変更可能。

textvariableオプションで、ウィジェットにスクリプト内の変数を監視させることもできる。変数が変更されたとき、ラベルは変数の新しい値を表示する。

resultsContents = StringVar()
label['textvariable'] = resultsContents
resultsContents.set('新しい値')

ただし、任意のPython変数をアタッチすることはできない。TkinterのStringVarクラスのインスタンスをウィジェットをアタッチする。(このクラスには、変更を監視し、変数と Tk の間でそれをやり取りするためのすべてのロジックが含まれている。変数の現在の値を読み書きするには、get と set メソッドを使用すること。)

画像を表示

ラベルは、テキストの代わりに画像を表示できる。UIに画像を表示したいだけの場合、通常はこの方法で行う。ディスク上に保存されているGIFを表示する場合、画像の”オブジェクト”を作成し、ラベルの画像設定オプションでそのオブジェクトを使用するように指定する。

image = PhotoImage(file='sample_image.gif')
label['image'] = image

複合設定オプションを使用して、画像とテキストを同時に表示することも可能。(ツールバーのボタンなどはこの方法を用いることがある。)デフォルト値はnone。画像があれば画像だけを表示、画像がなければtextまたはtextvariableで指定されたテキストを表示する。複合オプションで可能な他の値は、 text(テキストのみ) 、image(画像のみ)、center(テキストを画像の中央)、top、left、bottom、 rightがある。

フォント、色、その他

通常、フォントや色などは直接変更しない。(変更する必要がある場合、望ましい方法は、新しいスタイルを作成し、styleオプションを持つウィジェットで使用すること。)

他のテーマ別ウィジェットとは異なり、ラベルウィジェットでは、ウィジェット固有の明示的な設定オプションも代替手段として提供される。(このオプションは、特別な一回限りのケースにのみ使用すべき。)

フォント設定オプションを使うことで、ラベルのテキストを表示するために使われるフォントを指定できる。使用できるいくつかの定義済みフォントの名前を以下に示す。

フォント概要
TkDefaultFont指定されていない時のデフォルトのフォント
TkTextFontエントリウィジェット、リストボックスなどに使用される
TkFixedFont標準的な固定幅のフォント
TkMenuFontメニューアイテムに使用されるフォント
TkHeadingFontリストやテーブルの列見出し用フォント
TkCaptionFontウィンドウとダイアログのキャプションバーのフォント
TkSmallCaptionFontサブウィンドウやツールダイアログの小さなキャプション
TkIconFontアイコンキャプション用フォント
TkTooltipFontツールチップのフォント
label['font'] = "TkDefaultFont"

ラベルの前景色(テキスト)と背景色も、foregroundとbackgroundの設定オプションで変更できる。色名(例:red)または16進数のRGBコード(例:#ff340a)で指定できる。フレームで説明した浮き彫り設定オプションも使える。

レイアウト

ジオメトリマネージャは、ラベルの全体的なレイアウト(UI内の位置や大きさなど)を決定する。いくつかのオプションを使えば、ジオメトリマネージャが与える矩形内でラベルをどのように表示するかをコントロールできる。

ラベルに与えられたボックスが、ラベルの内容に対して必要な大きさよりも大きい場合、anchorオプションを使って、ラベルをどの辺や角に固定するか指定し、反対側の辺や角に空きスペースを残せる。可能な値は方角。(例: n (北、 つまり上)、 ne (北東、 つまり右上)、 e、 se、 s、 sw、 w、 nw、 center。)

複数行のラベル

テキスト(またはテキスト変数)の文字列にキャリッジリターン(\n)を埋め込むと、複数行のテキストを表示できる。wraplengthオプションで1行の最大長(ピクセル、センチメートルなど)を指定することで、自動的に複数行に折り返すことができる。

テキストの両端揃え

justifyオプションでコントロールできる。値はleft、center、right。テキストが一行しかない場合は、anchorオプションを使用するとよい。