Tkinter リストボックスで選択項目をハイライト表示するにはどうすればよいですか? 質問する

Tkinter リストボックスで選択項目をハイライト表示するにはどうすればよいですか? 質問する

単一選択モードに設定された 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 選択が解除され、ウィジェット外で選択するとウィジェットの選択が解除され、ウィジェットは選択がある場合に選択取得要求に応答します。通常、ウィジェットのデフォルトは選択をエクスポートすることです。

おすすめ記事