2010-12-09 58 views
1

this page describing the Tkinter text widget,它指出, 「的選擇是對應於當前的選擇命名SEL(或‘SEL’)的特殊標記。您可以使用常量SEL_FIRST和SEL_LAST來引用選擇。如果沒有選擇,Tkinter會引發TclError異常。'有沒有一種有效的方法來判斷在Tkinter Text小部件中是否選擇了文本?

我的問題:有沒有更有效的方法來判斷是否存在一個文本小的選擇,除了有例外嘴硬,如下面的代碼?

seltext = None 
try: 
    seltext = txt.get(SEL_FIRST, SEL_LAST) 
except TclError: 
    pass 

if seltext: 
    # do something with text 

回答

4

您可以詢問小部件「sel」標籤所包含的文本範圍。如果沒有選擇,範圍將爲零長度:

if txt.tag_ranges("sel"): 
    print "there is a selection" 
else: 
    print "there is no selection" 
+0

需要注意的是,`tag_ranges`將返回一個包含標籤名稱的文本範圍列表。所以如果你需要它們,這可能是有用的(正如我在這個特定時刻所做的,因此我評論)。 – Shule 2014-10-30 03:38:27

1

以下是檢查是否選擇指定位置的方法。

if "sel" in myTextWidget.tag_names(INSERT): #use 'not in' to see if it's not selected 
    print("INSERT to 'insert+1c' is selected text!"); 

我不知道他們爲什麼不讓你把第二個索引放在那裏。我也不知道這對處理器來說比你的版本更有效,但它看起來更符合我所知道的標準。

相關問題