単一選択モードに設定された 2 つの別々のリスト ボックスがあります。 から項目を選択するとlistboxA
、その項目が強調表示されますが、 から項目を選択するとlistboxB
、その項目が強調表示され、 からの項目はlistboxA
アクティブのままですが、強調表示されません。 両方を強調表示したままにするにはどうすればよいでしょうか。
ベストアンサー1
簡単な答え:exportselection
各リストボックスの属性を次のように設定します。False
Tkinter は、X ウィンドウ システムにルーツがあります。X には「選択」と呼ばれる概念があり、これはシステム クリップボードに似ています (より正確には、クリップボードは「プライマリ」選択です)。デフォルトでは、いくつかの tkinter ウィジェットは、その選択をプライマリ選択としてエクスポートします。アプリケーションは一度に 1 つのプライマリ選択しか持つことができないため、2 つのリスト ボックス間をクリックするとハイライトが消えます。
Tkinter では、exportselection
リストボックス (およびテキスト ウィジェットとエントリ ウィジェット) の構成オプションを使用してこの動作を制御できます。 に設定すると、False
選択内容が X 選択にエクスポートされなくなり、別のウィジェットにフォーカスが当たったときにウィジェットが選択内容を保持できるようになります。
例えば:
the_listbox = tk.Listbox(..., exportselection=False)
引用元:公式 tk ドキュメント:
エクスポート選択ウィジェット内の選択が X 選択でもあるかどうかを指定します。値は、true、false、0、1、yes、no など、Tcl_GetBoolean で受け入れられる形式のいずれかになります。選択がエクスポートされると、ウィジェット内で選択すると現在の X 選択が解除され、ウィジェット外で選択するとウィジェットの選択が解除され、ウィジェットは選択がある場合に選択取得要求に応答します。通常、ウィジェットのデフォルトは選択をエクスポートすることです。