2017-02-03 2 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() 

나는이 텍스트 위젯을 가지고 있지만 내가 텍스트 1 텍스트를 선택하면, 둘 다에서 텍스트를 선택하고 텍스트 1이 사라에서 다음 선택을 텍스트 2에서 텍스트를 선택하려고 기운 다. tkinter는 애플리케이션 당 하나의 텍스트 선택만을 허용하고 위젯 당 하나의 텍스트 선택 만 허용합니다.

텍스트 위젯에서 동시에 텍스트 위젯을 선택할 수있는 메커니즘이 tkinter에 있습니까? 아니면이 기능을 독자적으로 구현해야합니까?

답변

1

짧은 대답은 : False

는 Tkinter는 X 윈도우 시스템에 뿌리를두고 각 텍스트 위젯의 exportselection 속성을 설정합니다. X는 "선택"이라는 개념을 가지고 있는데, 이것은 시스템 클립 보드와 유사합니다 (보다 정확하게는 클립 보드가 "기본"선택입니다). 기본적으로 여러 tkinter 위지트 (widget)는 선택 사항을 PRIMARY 선택 항목으로 내 보냅니다. 하나의 응용 프로그램은 한 번에 하나의 PRIMARY 선택 만 가질 수 있으므로 두 개의 텍스트 위젯 사이를 클릭하면 강조 표시가 사라집니다.

Tkinter는 Text 위젯과 Entry 및 Listbox 위젯에 대한 exportselection 구성 옵션을 사용하여이 동작을 제어 할 수 있습니다. False으로 설정하면 선택 항목을 X 선택 항목으로 내보낼 수 없으므로 다른 위젯에 포커스가있을 때 위젯이 선택 항목을 유지할 수 있습니다. 예를 들어

:

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

official tk documentation 인용 :

exportselection 지정이 있는지의 여부를 위젯 선택도 X를 선택해야한다. 값은 true, false, 0, 1, yes 또는 no와 같이 Tcl_GetBoolean이 허용하는 형식 중 하나를 가질 수 있습니다. 선택 항목을 내 보낸 다음 위젯을 선택하면 현재 X 선택이 선택 취소되고 위젯 외부에서 선택하면 위젯 선택이 선택 취소되고 위젯은 선택 검색 요청 이 선택되면이를 응답합니다. 기본값은 위젯이 선택 사항을 내보낼 때 일반적으로 사용됩니다.