2017-02-03 10 views
1

私はこのサンプルアプリケーションを持っています。複数のテキストウィジェットで同時に複数の選択を行う

#!/usr/bin/env python3 

from tkinter import * 


class App(Tk): 
    def __init__(self): 
     super().__init__() 
     text1 = Text(self) 
     text1.insert('1.0', 'some text...') 
     text1.pack() 
     text2 = Text(self) 
     text2.insert('1.0', 'some text...') 
     text2.pack() 

App().mainloop() 

私は2つのテキストウィジェットを持っていますが、私はテキスト1のテキストを選択すると、それらの両方でテキストを選択し、テキスト1が消えてから、その後の選択をテキスト2のテキストを選択してみてくださいカント。 tkinterでは、ウィジェットごとではなく、アプリケーションごとに1つのテキスト選択しか許されていないようです。

tkinterには、両方のテキストウィジェットで同時にテキストを選択できるメカニズムがありますか、それとも自分で実装する必要がありますか?

答えて

1

短い答え:False

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

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

official tk documentationから引用

import tkinter as tk 
... 
text1 = tk.Text(..., exportselection=False) 
text2 = tk.Text(..., exportselection=False) 

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

関連する問題