2011-08-17 43 views
4

我目前正在使用一個Tkinter應用程序,它使用一個TextWidget作爲主窗口小部件。Tkinter Text selection_get()錯誤

當我試圖讓當前的選擇,將引發一個錯誤,但我不知道爲什麼......

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 

感謝。編輯:我知道它爲什麼不工作,我綁定到Ctrl-F,但它已經綁定在TextWidgets中(默認情況下,它和LeftArrow完全一樣)。 現在的問題是,我該如何擺脫?

回答

4

這個錯誤只是告訴你沒有選擇任何東西。這不是一個錯誤本身,只是說「沒有什麼可以得到」的方式。這可能是真的,或者你可能有選擇的東西,但它不會被導出到「選擇」。如果您將小部件上的exportselection選項設置爲true,則您選擇的任何內容應該被複制到選擇。如果不是,你的問題中沒有足夠的代碼來回答原因。

但是,要回答「如何獲取在窗口小部件中選定的文本」的問題:在文本窗口小部件中選擇的文本具有標記「sel」。你可以得到這個文本與textwidget.get('sel.first', 'sel.last')

使用get方法與標籤比使用selection_get更正確的,因爲它可能什麼都沒有的小部件選擇,但仍然有selection_get回報的東西(如:返回的任何其他部件已出口選擇)

+0

但是,當我這樣做與「textwidget.get('sel.first','sel.last')」,我得到一個錯誤: TclError:文本不包含任何標記的字符「sel」 「 – linaa

+0

如果你發現了這個錯誤,請相信它。你是說你確定選擇了某些東西,但是你仍然得到那個錯誤? –

+0

我知道問題(部分):我正在使用與''綁定,該綁定已綁定到某物(與LeftArrow做同樣的事情)。該動作可能在之前,這就解釋了爲什麼沒有選擇任何東西 – linaa