28

単一選択モードに設定された 2 つの個別のリストボックスがあります。から項目を選択するlistboxAと強調表示されますが、 から項目を選択するlistboxBと強調表示され、 からの項目listboxAはアクティブなままですが、強調表示されません。両方を強調表示したままにするにはどうすればよいですか?

4

1 に答える 1

47

簡単な答え:exportselection各リストボックスの属性をFalse

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

Tkinterexportselectionでは、リストボックス (およびテキスト ウィジェットとエントリ ウィジェット) の構成オプションを使用して、この動作を制御できます。に設定するとFalse、X 選択への選択のエクスポートが防止され、別のウィジェットがフォーカスされたときにウィジェットがその選択を保持できるようになります。

例えば:

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

公式tkドキュメントからの引用:

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

于 2012-04-06T22:39:21.843 に答える