2011-08-17 3 views
4

현재 Tkinter 앱에서 주 위젯으로 TextWidget을 사용하고 있습니다. ...Tkinter Text selection_get() Error

Exception in Tkinter callback 
Traceback (most recent call last): 
    File "C:\Python27\lib\lib-tk\Tkinter.py", line 1410, in __call__ 
    return self.func(*args) 
    File "C:\Users\Lina\Documents\Programmation\VPE project.py", line 502, in rechercher 
    texte=code_text.selection_get() 
    File "C:\Python27\lib\lib-tk\Tkinter.py", line 626, in selection_get 
    return self.tk.call(('selection', 'get') + self._options(kw)) 
TclError: PRIMARY selection doesn't exist or form "STRING" not defined 

감사를

나는 현재 선택을 얻으려고

는 오류가 발생합니다,하지만 난 왜하지 않습니다.

EDIT : 왜 작동하지 않는지, Ctrl-F로 바인드되었지만 이미 TextWidgets에 바인딩되어 있습니다 (기본적으로 LeftArrow와 정확히 똑같습니다). 이제 문제는 어떻게 제거합니까?

답변

4

이 오류는 단순히 아무것도 선택하지 않았다고 말합니다. 그 자체가 인 오류가 아닙니다. "얻을 수있는 게 없습니다"라고 말하는 것입니다. 그건 사실 일 수도 있고, 당신이 뭔가를 선택할 수도 있지만 "선택"으로 내보낼 수는 없습니다. 위젯의 exportselection 옵션을 true로 설정 한 경우 을 선택하면을 선택 항목으로 복사해야합니다. 그렇지 않은 경우 질문에 충분한 이유가없는 코드가 있습니다.

그러나 "위젯에서 선택한 텍스트를 얻는 방법"질문에 대답하려면 텍스트 위젯에서 선택한 텍스트에 'sel'태그가 있습니다. 다른 위젯에 수출 한 어떤 반환 :이 위젯에서 선택한 아무것도하는 것이 가능하기 때문에 아직은 selection_get 반환 뭔가 (예를 가지고 당신은 태그와 get 방법은 selection_get을 사용하는 것보다 더 정확한 사용 textwidget.get('sel.first', 'sel.last')

이 텍스트를 얻을 수 있습니다 선택)

+0

하지만 "textwidget.get ('sel.first', 'sel.last')"라고 입력하면 오류가 발생합니다. TclError : 텍스트에 태그가있는 문자가 없습니다 "sel" " – linaa

+0

오류가 발생하는 경우이를 믿으십시오. 선택하신 항목이 확실하다고 확신하나요? 여전히 오류가 발생하고 있습니까? –

+0

나는 (부분적으로)이 문제를 안다. 나는 ''이라는 바인딩을 사용하고 있는데, 이미 바인딩되어있다. (LeftArrow와 같은 일을한다.) 아마도 '이전에 아무 것도'선택되지 않은 이유를 설명하는 동작이 있었을 것입니다. – linaa

관련 문제