tkinter.ttk — Tkテーマウィジェット—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.8/library/tkinter.ttk
移動先:案内検索

tkinter.ttk —Tkをテーマにしたウィジェット

ソースコード: :source: `Lib / tkinter / ttk.py`



tkinter.ttk モジュールは、Tk8.5で導入されたTkテーマのウィジェットセットへのアクセスを提供します。 PythonがTk8.5に対してコンパイルされていない場合でも、 Tile がインストールされていれば、このモジュールにアクセスできます。 Tk 8.5を使用する前者の方法には、X11でのアンチエイリアスフォントレンダリングやウィンドウの透過性(X11でコンポジットウィンドウマネージャーが必要)などの追加の利点があります。

tkinter.ttk の基本的な考え方は、ウィジェットの動作を実装するコードを、その外観を実装するコードから可能な限り分離することです。

も参照してください

Tkウィジェットスタイリングのサポート
Tkのテーマサポートを紹介するドキュメント


Ttkの使用

Ttkの使用を開始するには、そのモジュールをインポートします。

from tkinter import ttk

基本的なTkウィジェットをオーバーライドするには、インポートはTkインポートに従う必要があります。

from tkinter import *
from tkinter.ttk import *

そのコードにより、いくつかの tkinter.ttk ウィジェット(ButtonCheckbuttonEntryFrameLabelLabelFrameMenubuttonPanedWindowRadiobuttonScaleScrollbar)を使用して、Tkウィジェットを自動的に置き換えます。

これには、プラットフォーム間でより良いルックアンドフィールを提供する新しいウィジェットを使用するという直接的な利点があります。 ただし、置換ウィジェットは完全には互換性がありません。 主な違いは、「fg」、「bg」などのウィジェットのスタイル設定に関連するウィジェットオプションがTtkウィジェットに存在しなくなったことです。 代わりに、ttk.Styleクラスを使用して、スタイリング効果を向上させてください。

も参照してください

タイルウィジェットを使用するように既存のアプリケーションを変換する
新しいウィジェットを使用するようにアプリケーションを移動するときに通常遭遇する違いについてのモノグラフ(Tcl用語を使用)。


Ttkウィジェット

Ttkには18個のウィジェットが付属しており、そのうち12個はtkinterにすでに存在しています:ButtonCheckbuttonEntryFrameLabel、[ X126X] 、MenubuttonPanedWindowRadiobuttonScaleScrollbar、およびスピンボックス。 他の6つは新しいものです:コンボボックスノートブックプログレスバーSeparatorSizegrip、ツリービュー[X131X ]。 そして、それらはすべて Widget のサブクラスです。

Ttkウィジェットを使用すると、アプリケーションのルックアンドフィールが向上します。 上で説明したように、スタイリングのコーディング方法には違いがあります。

Tkコード:

l1 = tkinter.Label(text="Test", fg="black", bg="white")
l2 = tkinter.Label(text="Test", fg="black", bg="white")

Ttkコード:

style = ttk.Style()
style.configure("BW.TLabel", foreground="black", background="white")

l1 = ttk.Label(text="Test", style="BW.TLabel")
l2 = ttk.Label(text="Test", style="BW.TLabel")

TtkStyling の詳細については、 Style クラスのドキュメントを参照してください。


ウィジェット

ttk.Widgetは、Tkをテーマにしたウィジェットでサポートされる標準のオプションとメソッドを定義しており、直接インスタンス化されることは想定されていません。

標準オプション

すべてのttkウィジェットは、次のオプションを受け入れます。

オプション 説明
クラス ウィンドウクラスを指定します。 このクラスは、ウィンドウの他のオプションについてオプションデータベースにクエリを実行するとき、ウィンドウのデフォルトのバインドタグを決定するとき、およびウィジェットのデフォルトのレイアウトとスタイルを選択するときに使用されます。 このオプションは読み取り専用であり、ウィンドウの作成時にのみ指定できます。
カーソル ウィジェットに使用するマウスカーソルを指定します。 空の文字列(デフォルト)に設定すると、カーソルは親ウィジェットに継承されます。
テイクフォーカス キーボードトラバーサル中にウィンドウがフォーカスを受け入れるかどうかを決定します。 0、1、または空の文字列が返されます。 0が返された場合は、キーボードトラバーサル中にウィンドウを完全にスキップする必要があることを意味します。 1の場合、ウィンドウが表示可能である限り、ウィンドウが入力フォーカスを受け取る必要があることを意味します。 また、空の文字列は、トラバーサルスクリプトがウィンドウにフォーカスするかどうかを決定することを意味します。
スタイル カスタムウィジェットスタイルを指定するために使用できます。


スクロール可能なウィジェットオプション

次のオプションは、スクロールバーによって制御されるウィジェットでサポートされています。

オプション 説明
xscrollcommand

水平スクロールバーとの通信に使用されます。

ウィジェットのウィンドウのビューが変更されると、ウィジェットはscrollコマンドに基づいてTclコマンドを生成します。

通常、このオプションは、いくつかのスクロールバーのメソッドScrollbar.set()で構成されます。 これにより、ウィンドウのビューが変更されるたびにスクロールバーが更新されます。

yscrollcommand 垂直スクロールバーとの通信に使用されます。 詳細については、上記を参照してください。


ラベルオプション

次のオプションは、ラベル、ボタン、およびその他のボタンのようなウィジェットでサポートされています。

オプション 説明
文章 ウィジェット内に表示するテキスト文字列を指定します。
textvariable テキストオプションリソースの代わりに値が使用される名前を指定します。
下線を引く 設定されている場合、テキスト文字列で下線を引く文字のインデックス(0ベース)を指定します。 下線文字は、ニーモニックのアクティブ化に使用されます。
画像 表示する画像を指定します。 これは、1つ以上の要素のリストです。 最初の要素はデフォルトの画像名です。 Style.map()で定義されている一連のstatespec / valueペアの場合、ウィジェットが特定の状態または状態の組み合わせにあるときに使用するさまざまな画像を指定します。 リスト内のすべての画像は同じサイズである必要があります。
化合物

テキストと画像の両方のオプションが存在する場合に、テキストに関連する画像を表示する方法を指定します。 有効な値は次のとおりです。

  • テキスト:テキストのみを表示
  • 画像:画像のみを表示
  • 上、下、左、右:テキストの上、下、左、または右にそれぞれ画像を表示します。
  • none:デフォルト。 存在する場合は画像を表示し、存在しない場合はテキストを表示します。
ゼロより大きい場合は、テキストラベルに割り当てるスペースを文字幅で指定します。ゼロより小さい場合は、最小幅を指定します。 ゼロまたは指定されていない場合、テキストラベルの自然な幅が使用されます。


互換性オプション

オプション 説明
「無効」状態ビットを制御するために、「通常」または「無効」に設定できます。 これは書き込み専用オプションです。設定するとウィジェットの状態が変更されますが、 Widget.state()メソッドはこのオプションに影響しません。


ウィジェットの状態

ウィジェットの状態は、独立した状態フラグのビットマップです。

国旗 説明
アクティブ マウスカーソルがウィジェット上にあり、マウスボタンを押すと何らかのアクションが発生します
無効 ウィジェットはプログラム制御下で無効になっています
集中 ウィジェットにはキーボードフォーカスがあります
押された ウィジェットが押されています
選択済み チェックボタンやラジオボタンなどの「オン」、「真」、または「現在」
バックグラウンド WindowsとMacには、「アクティブ」またはフォアグラウンドウィンドウの概念があります。 background 状態は、バックグラウンドウィンドウのウィジェットに設定され、フォアグラウンドウィンドウのウィジェットにはクリアされます
読み取り専用 ウィジェットはユーザーによる変更を許可してはなりません
代わりの ウィジェット固有の代替表示形式
無効 ウィジェットの値が無効です


状態指定は、状態名のシーケンスであり、オプションで、ビットがオフであることを示す感嘆符が前に付けられます。


ttk.Widget

以下に説明する方法に加えて、ttk.Widgetは方法tkinter.Widget.cget()およびtkinter.Widget.configure()をサポートします。

class tkinter.ttk.Widget
identify(x, y)

位置 x y にある要素の名前を返します。ポイントが要素内にない場合は、空の文字列を返します。

xy は、ウィジェットを基準にしたピクセル座標です。

instate(statespec, callback=None, *args, **kw)

ウィジェットの状態をテストします。 コールバックが指定されていない場合、ウィジェットの状態が statespec と一致する場合はTrueを返し、それ以外の場合はFalseを返します。 コールバックが指定されている場合、ウィジェットの状態が statespec と一致すると、argsで呼び出されます。

state(statespec=None)

ウィジェットの状態を変更または照会します。 statespec が指定されている場合、それに応じてウィジェットの状態を設定し、変更されたフラグを示す新しい statespec を返します。 statespec が指定されていない場合、現在有効になっている状態フラグを返します。

statespec は通常、リストまたはタプルになります。


コンボボックス

ttk.Comboboxウィジェットは、テキストフィールドと値のポップダウンリストを組み合わせたものです。 このウィジェットはEntryのサブクラスです。

Widget から継承されたメソッドの他に:Widget.cget()Widget.configure()Widget.identify()Widget.instate()および Widget.state()、およびEntryから継承された次のもの:Entry.bbox()Entry.delete()Entry.icursor()、 [ X239X]、Entry.insert()Entry.selection()Entry.xview()ttk.Comboboxで説明されている他の方法がいくつかあります。

オプション

このウィジェットは、次の特定のオプションを受け入れます。

オプション 説明
exportselection ブール値。 設定されている場合、ウィジェットの選択はウィンドウマネージャーの選択にリンクされます(たとえば、Misc.selection_getを呼び出すことで返すことができます)。
正当化する ウィジェット内でテキストをどのように配置するかを指定します。 「左」、「中央」、または「右」のいずれか。
身長 ポップアップリストボックスの高さを行で指定します。
ポストコマンド 値を表示する直前に呼び出されるスクリプト(Misc.registerに登録されている可能性があります)。 表示する値を指定できます。
「通常」、「読み取り専用」、または「無効」のいずれか。 「読み取り専用」状態では、値を直接編集することはできず、ユーザーはドロップダウンリストからのみ値を選択できます。 「通常」の状態では、テキストフィールドは直接編集可能です。 「無効」状態では、対話はできません。
textvariable 値がウィジェット値にリンクされている名前を指定します。 その名前に関連付けられた値が変更されるたびに、ウィジェットの値が更新されます。その逆も同様です。 tkinter.StringVarを参照してください。
ドロップダウンリストボックスに表示する値のリストを指定します。
ウィジェットのフォントの平均サイズの文字で、入力ウィンドウの希望の幅を示す整数値を指定します。


仮想イベント

コンボボックスウィジェットは、 < >> ユーザーが値のリストから要素を選択したときの仮想イベント。


ttk.Combobox

class tkinter.ttk.Combobox
current(newindex=None)

newindex が指定されている場合、コンボボックスの値を要素の位置 newindex に設定します。 それ以外の場合は、現在の値のインデックスを返します。現在の値が値リストにない場合は-1を返します。

get()

コンボボックスの現在の値を返します。

set(value)

コンボボックスの値を value に設定します。


スピンボックス

ttk.Spinboxウィジェットは、インクリメント矢印とデクリメント矢印で拡張されたttk.Entryです。 数値または文字列値のリストに使用できます。 このウィジェットはEntryのサブクラスです。

Widget から継承されたメソッドの他に:Widget.cget()Widget.configure()Widget.identify()Widget.instate()および Widget.state()、およびEntryから継承された次のもの:Entry.bbox()Entry.delete()Entry.icursor()、 [ X239X]、Entry.insert()Entry.xview()ttk.Spinboxで説明されている他のいくつかのメソッドがあります。

オプション

このウィジェットは、次の特定のオプションを受け入れます。


オプション 説明
から 浮動小数点値。 設定されている場合、これはデクリメントボタンがデクリメントする最小値です。 fromはPythonキーワードであるため、引数として使用する場合はfrom_と入力する必要があります。
浮動小数点値。 設定されている場合、これはインクリメントボタンがインクリメントする最大値です。
インクリメント 浮動小数点値。 インクリメント/デクリメントボタンが値を変更する量を指定します。 デフォルトは1.0です。
文字列または浮動小数点値のシーケンス。 指定した場合、インクリメント/デクリメントボタンは、数値をインクリメントまたはデクリメントするのではなく、この順序でアイテムを循環します。
包む ブール値。 Trueの場合、インクリメントボタンとデクリメントボタンはto値からfrom値に、またはfrom値からto値に循環します。 、 それぞれ。
フォーマット 文字列値。 インクリメント/デクリメントボタンで設定する数値の形式を指定します。 これは「%W.Pf」の形式である必要があります。ここで、Wは値の埋め込み幅、Pは精度、「%」および「f」はリテラルです。
指図 Python呼び出し可能。 インクリメントボタンまたはデクリメントボタンのいずれかが押されるたびに、引数なしで呼び出されます。


仮想イベント

スピンボックスウィジェットは、 < >> ユーザーが押すと仮想イベント 、および < >> ユーザーが押すと仮想イベント 。


ttk.Spinbox

class tkinter.ttk.Spinbox
get()

スピンボックスの現在の値を返します。

set(value)

スピンボックスの値を value に設定します。


ノート

Ttk Notebookウィジェットは、ウィンドウのコレクションを管理し、一度に1つずつ表示します。 各子ウィンドウはタブに関連付けられており、ユーザーはこのタブを選択して、現在表示されているウィンドウを変更できます。

オプション

このウィジェットは、次の特定のオプションを受け入れます。

オプション 説明
身長 存在し、ゼロより大きい場合は、ペイン領域の目的の高さを指定します(内部のパディングやタブは含まれません)。 それ以外の場合は、すべてのペインの最大の高さが使用されます。
パディング ノートブックの外側の周りに追加する余分なスペースの量を指定します。 パディングは、左上から右下に最大4つの長さ仕様のリストです。 指定する要素が4つ未満の場合、デフォルトで下が上、右がデフォルトで左、上がデフォルトで左になります。
存在し、ゼロより大きい場合は、ペイン領域の目的の幅を指定します(内部パディングは含まれません)。 それ以外の場合は、すべてのペインの最大幅が使用されます。


タブオプション

タブには特定のオプションもあります。

オプション 説明
「通常」、「無効」、「非表示」のいずれか。 「無効」の場合、タブは選択できません。 「非表示」の場合、タブは表示されません。
ねばねば 子ウィンドウをペイン領域内でどのように配置するかを指定します。 値は、0個以上の文字「n」、「s」、「e」、または「w」を含む文字列です。 grid()ジオメトリマネージャに従って、各文字は子ウィンドウが固定される側面(北、南、東、または西)を指します。
パディング ノートブックとこのペインの間に追加する余分なスペースの量を指定します。 構文は、このウィジェットで使用されるオプションのパディングと同じです。
文章 タブに表示するテキストを指定します。
画像 タブに表示する画像を指定します。 ウィジェットで説明されているオプション画像を参照してください。
化合物 オプションtextとimageの両方が存在する場合に、テキストに関連する画像を表示する方法を指定します。 有効な値については、ラベルオプションを参照してください。
下線を引く テキスト文字列で下線を引く文字のインデックス(0ベース)を指定します。 下線付きの文字は、 Notebook.enable_traversal()が呼び出された場合のニーモニックアクティベーションに使用されます。


タブ識別子

ttk.Notebookのいくつかのメソッドに存在するtab_idは、次のいずれかの形式をとることができます。

  • ゼロとタブの数の間の整数
  • 子ウィンドウの名前
  • タブを識別する「@ x、y」形式の位置指定
  • 現在選択されているタブを識別するリテラル文字列「current」
  • タブの数を返すリテラル文字列「end」( Notebook.index()でのみ有効)


仮想イベント

このウィジェットは、 < >> 新しいタブが選択された後の仮想イベント。


ttk.Notebook

class tkinter.ttk.Notebook
add(child, **kw)

ノートブックに新しいタブを追加します。

ウィンドウが現在ノートブックによって管理されているが非表示になっている場合は、以前の位置に復元されます。

使用可能なオプションのリストについては、タブオプションを参照してください。

forget(tab_id)

tab_id で指定されたタブを削除し、関連付けられたウィンドウのマップを解除して管理を解除します。

hide(tab_id)

tab_id で指定されたタブを非表示にします。

タブは表示されませんが、関連するウィンドウはノートブックによって管理されたままであり、その構成は記憶されています。 非表示のタブは、 add()コマンドで復元できます。

identify(x, y)

位置 xy にあるタブ要素の名前を返します。ない場合は、空の文字列を返します。

index(tab_id)

tab_id で指定されたタブの数値インデックス、または tab_id が文字列「end」の場合はタブの総数を返します。

insert(pos, child, **kw)

指定した位置にペインを挿入します。

pos は、文字列「end」、整数インデックス、または管理対象の子の名前のいずれかです。 がすでにノートブックによって管理されている場合は、指定された位置に移動します。

使用可能なオプションのリストについては、タブオプションを参照してください。

select(tab_id=None)

指定された tab_id を選択します。

関連する子ウィンドウが表示され、以前に選択したウィンドウ(異なる場合)のマップが解除されます。 tab_id を省略すると、現在選択されているペインのウィジェット名を返します。

tab(tab_id, option=None, **kw)

特定の tab_id のオプションを照会または変更します。

kw が指定されていない場合、タブオプション値のディクショナリを返します。 option が指定されている場合、その option の値を返します。 それ以外の場合は、オプションを対応する値に設定します。

tabs()

ノートブックによって管理されているウィンドウのリストを返します。

enable_traversal()

このノートブックを含むトップレベルウィンドウのキーボードトラバーサルを有効にします。

これにより、ノートブックを含むトップレベルウィンドウのバインディングが次のように拡張されます。

  • Control-Tab :現在選択されているタブに続くタブを選択します。

  • Shift-Control-Tab :現在選択されているタブの前のタブを選択します。

  • Alt-K K は任意のタブのニーモニック(下線付き)文字であり、そのタブを選択します。

ネストされたノートブックを含め、単一のトップレベルにある複数のノートブックでトラバーサルを有効にすることができます。 ただし、ノートブックトラバーサルは、すべてのペインにマスターとしてのノートブックがある場合にのみ正しく機能します。


プログレスバー

ttk.Progressbarウィジェットは、長時間実行されている操作のステータスを表示します。 1)実行する作業の合計量に対して完了した量を表示する確定モードと、2)作業が進行中であることをユーザーに知らせるアニメーション表示を提供する不確定モードの2つのモードで動作できます。

オプション

このウィジェットは、次の特定のオプションを受け入れます。

オプション 説明
オリエント 「水平」または「垂直」のいずれか。 プログレスバーの方向を指定します。
長さ プログレスバーの長軸の長さを指定します(水平の場合は幅、垂直の場合は高さ)。
モード 「確定」または「不確定」のいずれか。
最大 最大値を指定する数値。 デフォルトは100です。
価値 プログレスバーの現在の値。 「確定」モードでは、これは完了した作業の量を表します。 「不確定」モードでは、モジュロ最大として解釈されます。 つまり、プログレスバーの値が maximum 増加すると、プログレスバーは1つの「サイクル」を完了します。
変数 オプション値にリンクされている名前。 指定した場合、プログレスバーの値は、この名前が変更されるたびに自動的にこの名前の値に設定されます。
段階 読み取り専用オプション。 ウィジェットは、このオプションの値が0より大きく、確定モードでは最大値よりも小さい場合は常に、このオプションの値を定期的にインクリメントします。 このオプションは、追加のアニメーション効果を提供するために現在のテーマで使用できます。


ttk.Progressbar

class tkinter.ttk.Progressbar
start(interval=None)

自動インクリメントモードの開始:間隔ミリ秒ごとに Progressbar.step()を呼び出す定期的なタイマーイベントをスケジュールします。 省略した場合、 interval のデフォルトは50ミリ秒です。

step(amount=None)

プログレスバーの値を amount だけインクリメントします。

amount を省略すると、デフォルトで1.0になります。

stop()

自動インクリメントモードの停止:このプログレスバーの Progressbar.start()によって開始された定期的なタイマーイベントをキャンセルします。


セパレーター

ttk.Separatorウィジェットは、水平または垂直のセパレータバーを表示します。

ttk.Widgetから継承した方法以外の方法はありません。

オプション

このウィジェットは、次の特定のオプションを受け入れます。

オプション 説明
オリエント 「水平」または「垂直」のいずれか。 セパレータの方向を指定します。


サイズグリップ

ttk.Sizegripウィジェット(グローボックスとも呼ばれます)を使用すると、ユーザーはグリップを押してドラッグすることで、含まれているトップレベルウィンドウのサイズを変更できます。

このウィジェットには、ttk.Widgetから継承されたもの以外に、特定のオプションも特定のメソッドもありません。

プラットフォーム固有の注意事項

  • MacOS Xでは、トップレベルのウィンドウにデフォルトでサイズグリップが自動的に組み込まれています。 Sizegripを追加しても、組み込みのグリップがウィジェットをマスクするだけなので、無害です。


バグ

  • 含まれているトップレベルの位置が画面の右または下を基準にして指定された場合(例: …。)、Sizegripウィジェットはウィンドウのサイズを変更しません。
  • このウィジェットは、「南東」のサイズ変更のみをサポートします。


ツリー表示

ttk.Treeviewウィジェットは、アイテムの階層コレクションを表示します。 各アイテムには、テキストラベル、オプションの画像、およびオプションのデータ値のリストがあります。 データ値は、ツリーラベルの後の連続する列に表示されます。

データ値が表示される順序は、ウィジェットオプションdisplaycolumnsを設定することで制御できます。 ツリーウィジェットは、列見出しを表示することもできます。 列には、ウィジェットオプションの列にリストされている番号または記号名でアクセスできます。 列識別子を参照してください。

各アイテムは一意の名前で識別されます。 アイテムIDが呼び出し元から提供されていない場合、ウィジェットはアイテムIDを生成します。 {}という名前の識別されたルートアイテムがあります。 ルートアイテム自体は表示されません。 その子は階層の最上位に表示されます。

各アイテムにはタグのリストもあり、イベントバインディングを個々のアイテムに関連付けたり、アイテムの外観を制御したりするために使用できます。

Treeviewウィジェットは、 Scrollable Widget Options で説明されているオプションと、メソッド Treeview.xview()および Treeview.yview()に従って、水平および垂直スクロールをサポートします。 。

オプション

このウィジェットは、次の特定のオプションを受け入れます。

オプション 説明
列の数とその名前を指定する列識別子のリスト。
displaycolumns 表示されるデータ列とその順序を指定する列識別子(シンボリックインデックスまたは整数インデックス)のリスト、または文字列「#all」。
身長 表示する行数を指定します。 注:要求された幅は、列幅の合計から決定されます。
パディング ウィジェットの内部パディングを指定します。 パディングは、最大4つの長さ仕様のリストです。
selectmode

組み込みのクラスバインディングが選択を管理する方法を制御します。 「拡張」、「閲覧」、「なし」のいずれか。 「拡張」(デフォルト)に設定すると、複数の項目を選択できます。 「参照」の場合、一度に1つのアイテムのみが選択されます。 「なし」の場合、選択は変更されません。

このオプションの値に関係なく、アプリケーションコードとタグバインディングで選択を自由に設定できることに注意してください。

見せる

ツリーのどの要素を表示するかを指定する、以下の値を0個以上含むリスト。

  • ツリー:列#0にツリーラベルを表示します。
  • 見出し:見出し行を表示します。

デフォルトは「ツリー見出し」です。つまり、すべての要素を表示します。

:show =” tree”が指定されていない場合でも、列#0は常にツリー列を参照します。


アイテムオプション

挿入およびアイテムウィジェットコマンドのアイテムには、次のアイテムオプションを指定できます。

オプション 説明
文章 アイテムに表示するテキストラベル。
画像 ラベルの左側に表示されるTk画像。

アイテムに関連付けられている値のリスト。

各アイテムには、ウィジェットオプションの列と同じ数の値が必要です。 列よりも値が少ない場合、残りの値は空であると見なされます。 列よりも多くの値がある場合、余分な値は無視されます。

開いた True / Falseの値は、アイテムの子を表示するか非表示にするかを示します。
タグ このアイテムに関連付けられているタグのリスト。


タグオプション

タグには次のオプションを指定できます。

オプション 説明
前景 テキストの前景色を指定します。
バックグラウンド セルまたはアイテムの背景色を指定します。
フォント テキストを描画するときに使用するフォントを指定します。
画像 アイテムの画像オプションが空の場合に、アイテムの画像を指定します。


列識別子

列識別子は、次のいずれかの形式を取ります。

  • 列のリストオプションからの記号名。
  • n番目のデータ列を指定する整数n。
  • #n形式の文字列。nは整数で、n番目の表示列を指定します。

ノート:

  • アイテムのオプション値は、保存されている順序とは異なる順序で表示される場合があります。
  • 列#0は、show =” tree”が指定されていない場合でも、常にツリー列を参照します。

データ列番号は、アイテムのオプション値リストへのインデックスです。 表示列番号は、値が表示されるツリーの列番号です。 ツリーラベルは列#0に表示されます。 オプションdisplaycolumnsが設定されていない場合、データ列nは列#n +1に表示されます。 繰り返しますが、列#0は常にツリー列を参照します。


仮想イベント

Treeviewウィジェットは、次の仮想イベントを生成します。

イベント 説明
< >> 選択が変更されるたびに生成されます。
< >> フォーカスアイテムをopen = Trueに設定する直前に生成されます。
< >> フォーカスアイテムをopen = Falseに設定した直後に生成されます。


Treeview.focus()および Treeview.selection()メソッドを使用して、影響を受ける1つまたは複数のアイテムを判別できます。


ttk.Treeview

class tkinter.ttk.Treeview
bbox(item, column=None)

指定されたアイテムのバウンディングボックス(ツリービューウィジェットのウィンドウを基準にしたもの)を(x、y、幅、高さ)の形式で返します。

column が指定されている場合、そのセルのバウンディングボックスを返します。 item が表示されていない場合(つまり、閉じたアイテムの子孫であるか、画面外にスクロールされている場合)、空の文字列を返します。

get_children(item=None)

item に属する子のリストを返します。

item が指定されていない場合、ルートの子を返します。

set_children(item, *newchildren)

item の子を newchildren に置き換えます。

item に存在し、 newchildren に存在しない子は、ツリーから切り離されます。 newchildren のアイテムは、 item の祖先であってはなりません。 newchildren を指定しないと、 item の子が切り離されることに注意してください。

column(column, option=None, **kw)

指定されたのオプションを照会または変更します。

kw が指定されていない場合、列オプション値のdictを返します。 option が指定されている場合、その option の値が返されます。 それ以外の場合は、オプションを対応する値に設定します。

有効なオプション/値は次のとおりです。

  • id

    列名を返します。 これは読み取り専用オプションです。

  • アンカー:標準のTkアンカー値の1つ。

    この列のテキストをセルに対してどのように配置するかを指定します。

  • 最小幅:幅

    列の最小幅(ピクセル単位)。 ツリービューウィジェットは、ウィジェットのサイズが変更されたとき、またはユーザーが列をドラッグしたときに、このオプションで指定された列よりも小さくなりません。

  • ストレッチ:True / False

    ウィジェットのサイズが変更されたときに列の幅を調整するかどうかを指定します。

  • 幅:幅

    列の幅(ピクセル単位)。

ツリー列を構成するには、column =“#0”でこれを呼び出します。

delete(*items)

指定されたすべてのアイテムとそのすべての子孫を削除します。

ルートアイテムは削除できません。

detach(*items)

指定されたすべてのアイテムのリンクをツリーから解除します。

アイテムとそのすべての子孫はまだ存在しており、ツリーの別のポイントで再挿入できますが、表示されません。

ルートアイテムは切り離せない場合があります。

exists(item)

指定された item がツリーに存在する場合、Trueを返します。

focus(item=None)

item を指定した場合、フォーカスアイテムを item に設定します。 それ以外の場合は、現在のフォーカスアイテムを返します。ない場合は、 を返します。

heading(column, option=None, **kw)

指定されたの見出しオプションを照会または変更します。

kw が指定されていない場合、見出しオプション値のdictを返します。 option が指定されている場合、その option の値が返されます。 それ以外の場合は、オプションを対応する値に設定します。

有効なオプション/値は次のとおりです。

  • テキスト:テキスト

    列見出しに表示するテキスト。

  • 画像:imageName

    列見出しの右側に表示する画像を指定します。

  • アンカー:アンカー

    見出しテキストの配置方法を指定します。 標準のTkアンカー値の1つ。

  • コマンド:コールバック

    見出しラベルが押されたときに呼び出されるコールバック。

ツリーの列見出しを構成するには、column =“#0”でこれを呼び出します。

identify(component, x, y)

x および y で指定されたポイントの下にある、指定されたコンポーネントの説明を返します。そのようなコンポーネントが存在しない場合は、空の文字列を返します。その位置で。

identify_row(y)

y の位置にあるアイテムのアイテムIDを返します。

identify_column(x)

位置 x にあるセルのデータ列識別子を返します。

ツリー列のIDは#0です。

identify_region(x, y)

次のいずれかを返します。

領域

意味

見出し

木の見出しエリア。

セパレーター

2つの列見出しの間のスペース。

ツリーエリア。

細胞

データセル。

可用性:Tk8.6。

identify_element(x, y)

位置 xy の要素を返します。

可用性:Tk8.6。

index(item)

親の子リスト内の item の整数インデックスを返します。

insert(parent, index, iid=None, **kw)

新しいアイテムを作成し、新しく作成されたアイテムのアイテム識別子を返します。

parent は、親アイテムのアイテムID、または新しいトップレベルアイテムを作成するための空の文字列です。 index は整数、または値「end」であり、親の子のリストのどこに新しいアイテムを挿入するかを指定します。 index がゼロ以下の場合、新しいノードが最初に挿入されます。 index が現在の子の数以上の場合、最後に挿入されます。 iid が指定されている場合、それはアイテムIDとして使用されます。 iid はツリーにまだ存在していてはなりません。 それ以外の場合は、新しい一意の識別子が生成されます。

利用可能なポイントのリストについては、アイテムオプションを参照してください。

item(item, option=None, **kw)

指定されたアイテムのオプションを照会または変更します。

オプションが指定されていない場合、アイテムのオプション/値を含むdictが返されます。 option が指定されている場合、そのオプションの値が返されます。 それ以外の場合は、オプションを kw で指定された対応する値に設定します。

move(item, parent, index)

itemparent の子リストの index の位置に移動します。

アイテムをその子孫の1つの下に移動することは違法です。 index がゼロ以下の場合、 item は先頭に移動します。 子の数以上の場合、最後に移動されます。 item が取り外された場合は、再度取り付けられます。

next(item)

item の次の兄弟の識別子を返します。 item がその親の最後の子である場合は を返します。

parent(item)

item の親のIDを返します。 item が階層の最上位にある場合は を返します。

prev(item)

item の前の兄弟の識別子を返します。 item がその親の最初の子である場合は を返します。

reattach(item, parent, index)

Treeview.move()のエイリアス。

see(item)

item が表示されていることを確認してください。

item のすべての祖先オープンオプションをTrueに設定し、必要に応じてウィジェットをスクロールして、 item がツリーの表示部分内に収まるようにします。

selection()

選択したアイテムのタプルを返します。

バージョン3.8で変更: selection()は引数を取りません。 選択状態を変更するには、次の選択方法を使用します。

selection_set(*items)

items が新しい選択になります。

バージョン3.6での変更: items は、単一のタプルとしてだけでなく、個別の引数として渡すことができます。

selection_add(*items)

アイテムを選択範囲に追加します。

バージョン3.6での変更: items は、単一のタプルとしてだけでなく、個別の引数として渡すことができます。

selection_remove(*items)

選択からアイテムを削除します。

バージョン3.6での変更: items は、単一のタプルとしてだけでなく、個別の引数として渡すことができます。

selection_toggle(*items)

items の各アイテムの選択状態を切り替えます。

バージョン3.6での変更: items は、単一のタプルとしてだけでなく、個別の引数として渡すことができます。

set(item, column=None, value=None)

1つの引数を使用して、指定された item の列と値のペアのディクショナリを返します。 2つの引数を使用して、指定されたの現在の値を返します。 3つの引数を使用して、指定された item 内の指定された column の値を指定された value に設定します。

tag_bind(tagname, sequence=None, callback=None)

指定されたイベントシーケンスのコールバックをタグタグ名にバインドします。 イベントがアイテムに配信されると、アイテムの各タグオプションのコールバックが呼び出されます。

tag_configure(tagname, option=None, **kw)

指定されたタグ名のオプションを照会または変更します。

kw が指定されていない場合、 tagname のオプション設定の辞書を返します。 option が指定されている場合、指定された tagname に対してその option の値を返します。 それ以外の場合は、オプションを指定されたタグ名に対応する値に設定します。

tag_has(tagname, item=None)

item が指定されている場合、指定された item に指定されたタグ名があるかどうかに応じて1または0を返します。 それ以外の場合は、指定されたタグを持つすべてのアイテムのリストを返します。

可用性:Tk 8.6

xview(*args)

ツリービューの水平位置を照会または変更します。

yview(*args)

ツリービューの垂直位置を照会または変更します。


Ttkスタイリング

ttkの各ウィジェットには、ウィジェットを構成する要素のセットとその配置方法、および要素オプションの動的設定とデフォルト設定を指定するスタイルが割り当てられます。 デフォルトでは、スタイル名はウィジェットのクラス名と同じですが、ウィジェットのスタイルオプションによって上書きされる場合があります。 ウィジェットのクラス名がわからない場合は、メソッドMisc.winfo_class()(somewidget.winfo_class())を使用してください。

も参照してください

Tcl'2004カンファレンスプレゼンテーション
このドキュメントでは、テーマエンジンのしくみについて説明します


class tkinter.ttk.Style

このクラスは、スタイルデータベースを操作するために使用されます。

configure(style, query_opt=None, **kw)

style で指定されたオプションのデフォルト値を照会または設定します。

kw の各キーはオプションであり、各値はそのオプションの値を識別する文字列です。

たとえば、すべてのデフォルトボタンを、パディングと背景色が異なるフラットボタンに変更するには、次のようにします。

from tkinter import ttk
import tkinter

root = tkinter.Tk()

ttk.Style().configure("TButton", padding=6, relief="flat",
   background="#ccc")

btn = ttk.Button(text="Sample")
btn.pack()

root.mainloop()
map(style, query_opt=None, **kw)

スタイルで指定されたオプションの動的な値を照会または設定します。

kw の各キーはオプションであり、各値は、タプル、リスト、またはその他の設定にグループ化された状態仕様を含むリストまたはタプル(通常)である必要があります。 statespecは、1つ以上の状態とその後の値の複合です。

例はそれをより理解しやすくするかもしれません:

import tkinter
from tkinter import ttk

root = tkinter.Tk()

style = ttk.Style()
style.map("C.TButton",
    foreground=[('pressed', 'red'), ('active', 'blue')],
    background=[('pressed', '!disabled', 'black'), ('active', 'white')]
    )

colored_btn = ttk.Button(text="Test", style="C.TButton").pack()

root.mainloop()

オプションの(状態、値)シーケンスの順序は重要であることに注意してください。たとえば、フォアグラウンドオプションで順序が[('active', 'blue'), ('pressed', 'red')]に変更された場合、ウィジェットが存在するときに結果は青いフォアグラウンドになります。アクティブまたは押された状態。

lookup(style, option, state=None, default=None)

スタイルオプションに指定された値を返します。

state が指定されている場合、1つ以上の状態のシーケンスであることが期待されます。 default 引数が設定されている場合、オプションの指定が見つからない場合のフォールバック値として使用されます。

ボタンがデフォルトで使用するフォントを確認するには:

from tkinter import ttk

print(ttk.Style().lookup("TButton", "font"))
layout(style, layoutspec=None)

指定されたスタイルのウィジェットレイアウトを定義します。 layoutspec を省略した場合は、指定したスタイルのレイアウト仕様を返します。

layoutspec は、指定されている場合、リストまたはその他のシーケンスタイプ(文字列を除く)である必要があります。各アイテムはタプルで、最初のアイテムはレイアウト名で、2番目のアイテムの形式は次のとおりです。 レイアウトで説明されています。

形式を理解するには、次の例を参照してください(有用なことを行うことを意図したものではありません)。

from tkinter import ttk
import tkinter

root = tkinter.Tk()

style = ttk.Style()
style.layout("TMenubutton", [
   ("Menubutton.background", None),
   ("Menubutton.button", {"children":
       [("Menubutton.focus", {"children":
           [("Menubutton.padding", {"children":
               [("Menubutton.label", {"side": "left", "expand": 1})]
           })]
       })]
   }),
])

mbtn = ttk.Menubutton(text='Text')
mbtn.pack()
root.mainloop()
element_create(elementname, etype, *args, **kw)

指定された etype の現在のテーマに、「image」、「from」、または「vsapi」のいずれかであると予想される新しい要素を作成します。 後者は、WindowsXPおよびVistaのTk8.6aでのみ使用可能であり、ここでは説明しません。

「image」を使用する場合、 args には、デフォルトのイメージ名とそれに続くstatespec / valueのペア(これはimagespec)が含まれている必要があり、 kw には次のオプションがあります。

  • border = padding

    パディングは、最大4つの整数のリストであり、それぞれ左、上、右、および下の境界線を指定します。

  • 高さ=高さ

    要素の最小の高さを指定します。 ゼロ未満の場合、ベース画像の高さがデフォルトとして使用されます。

  • padding = padding

    要素の内部パディングを指定します。 指定されていない場合、デフォルトで境界線の値になります。

  • sticky = spec

    画像が最終区画内にどのように配置されるかを指定します。 仕様には、0個以上の文字「n」、「s」、「w」、または「e」が含まれています。

  • width = width

    要素の最小幅を指定します。 ゼロ未満の場合、ベースイメージの幅がデフォルトとして使用されます。


etype の値として「from」が使用されている場合、 element_create()は既存の要素のクローンを作成します。 args には、要素の複製元となるテーマ名と、オプションで複製元の要素が含まれている必要があります。 複製元のこの要素が指定されていない場合、空の要素が使用されます。 kw は破棄されます。

element_names()

現在のテーマで定義されている要素のリストを返します。

element_options(elementname)

elementname のオプションのリストを返します。

theme_create(themename, parent=None, settings=None)

新しいテーマを作成します。

テーマ名が既に存在する場合はエラーになります。 parent が指定されている場合、新しいテーマは親テーマからスタイル、要素、およびレイアウトを継承します。 設定が存在する場合、 theme_settings()に使用されるのと同じ構文を持つことが期待されます。

theme_settings(themename, settings)

現在のテーマを一時的にテーマ名に設定し、指定した設定を適用してから、前のテーマを復元します。

settings の各キーはスタイルであり、各値には「configure」、「map」、「layout」、「element create」のキーが含まれる場合があり、メソッドで指定されたものと同じ形式であることが期待されます。それぞれ Style.configure()Style.map()Style.layout()Style.element_create()

例として、デフォルトテーマのコンボボックスを少し変更してみましょう。

from tkinter import ttk
import tkinter

root = tkinter.Tk()

style = ttk.Style()
style.theme_settings("default", {
   "TCombobox": {
       "configure": {"padding": 5},
       "map": {
           "background": [("active", "green2"),
                          ("!disabled", "green4")],
           "fieldbackground": [("!disabled", "green3")],
           "foreground": [("focus", "OliveDrab1"),
                          ("!disabled", "OliveDrab2")]
       }
   }
})

combo = ttk.Combobox().pack()

root.mainloop()
theme_names()

既知のすべてのテーマのリストを返します。

theme_use(themename=None)

themename が指定されていない場合、使用中のテーマを返します。 それ以外の場合は、現在のテーマをに設定しますテーマ名 、すべてのウィジェットを更新し、 >イベント。

レイアウト

オプションがない場合、レイアウトはNoneにすることも、要素の配置方法を指定するオプションの指示にすることもできます。 レイアウトメカニズムは、パックジオメトリマネージャーの簡略化されたバージョンを使用します。初期キャビティが与えられると、各要素に区画が割り当てられます。 有効なオプション/値は次のとおりです。

  • *; サイド:どちら側
    要素を配置するキャビティのどちら側を指定します。 上、右、下、または左のいずれか。 省略した場合、要素はキャビティ全体を占めます。
  • *; スティッキー:nswe
    割り当てられた区画内のどこに要素を配置するかを指定します。
  • *; 単位:0または1
    1に設定すると、 Widget.identify()などの目的で、要素とそのすべての子孫が単一の要素として扱われます。 グリップ付きのスクロールバーの親指などに使用されます。
  • *; 子供:[サブレイアウト…]
    要素内に配置する要素のリストを指定します。 各要素はタプル(または他のシーケンスタイプ)であり、最初の項目はレイアウト名であり、もう1つは Layout です。