これはTkinterでは非常に簡単です。
この作業を行うには、いくつかのことがあります。まず、標準的な動作がでないことを確認する必要があります。つまり、タブにタブを挿入してフォーカスを次のウィジェットに移動させることは望ましくありません。デフォルトでは、イベントは、標準的な動作が発生する前に特定のウィジェット(通常はクラス・バインディング)によって処理されます。 Tkにはイベントを後で処理するのを止める簡単な組み込みのメカニズムがあります。
第2に、適切なウィジェットにフォーカスを移す必要があります。次のウィジェットが何であるかを判断するための組み込みサポートがあります。例えば
:このコード約
def focus_next_window(event):
event.widget.tk_focusNext().focus()
return("break")
text_widget=Text(...)
text_widget.bind("<Tab>", focus_next_window)
重要事項:
- キーボードトラバーサル階層内の次のウィジェットを返し
tk_focusNext()
方法。 "break"
を返すそのウィジェット
- にフォーカスを設定します
focus()
- 方法は、それは発射からバインディングクラスを防ぐという点で重要です。あなたが望まないタブ文字を挿入するのはこのクラスバインディングです。
あなたは、この結合は、すべてのテキストウィジェットに影響を与える作る代わりにbind()
のbind_class()
メソッドを使用することができ、アプリケーション内のすべてのテキストウィジェットのため、この動作が必要な場合。
バインディングで非常に特定のウィジェットにフォーカスを移すこともできますが、デフォルトのトラバーサルの順序を守り、トラバーサルの順序が正しいことを確認することをおすすめします。
帰り( "ブレーク")のヒントはちょうど私の日を救った、ブライアンに感謝! – Symon