2012-04-06 34 views
14

私は1つの選択モードで2つの分離されたリストボックスを設定しました。 listboxAから項目を選択すると、項目が強調表示されますが、listboxBから項目を選択すると、項目が強調表示され、listboxAの項目はアクティブのままですが、強調表示されません。どちらも強調表示するにはどうすればいいですか?tkinterリストボックスで選択範囲をハイライト表示する方法は?

答えて

21

短い答え:False

に各リストボックスの exportselection属性を設定

Tkinterには、Xウィンドウシステムでそのルーツを持っています。 Xには「選択」と呼ばれる概念があります。これはシステムのクリップボードに似ています(より正確には、クリップボードは「PRIMARY」の選択です)。デフォルトでは、いくつかのtkinterウィジェットはその選択をPRIMARY選択にエクスポートします。アプリケーションでは、一度に1つのPRIMARY項目のみを選択できます。そのため、2つのリストボックスの間をクリックするとハイライトが消えます。

Tkinterでは、リストボックス(およびテキストウィジェットと入力ウィジェット)の設定オプションexportselectionでこの動作を制御できます。 Falseに設定すると、選択範囲をX選択にエクスポートできなくなり、異なるウィジェットがフォーカスを取得したときにウィジェットがその選択を保持できるようになります。例えば

official tk documentationから引用

the_listbox = tk.Listbox(..., exportselection=False) 

exportselection は、ウィジェット内の選択も X選択するかどうかを指定。値は、true、false、0,1、yes、noなど、 Tcl_GetBooleanで受け入れられる形式のいずれかを持つことができます。 選択がエクスポートされている場合、ウィジェット内で選択すると 現在のX選択が選択解除され、ウィジェットの外で選択するとウィジェット ウィジェットの選択が解除され、ウィジェットは選択検索要求 に応答します。デフォルトは通常、ウィジェットが の選択項目をエクスポートするためのものです。

関連する問題