有没有一种有效的方法来判断是否在Tkinter Text小部件中选择了文本?

时间:2010-12-09 14:23:40

标签: python text tkinter selection

this page describing the Tkinter text widget上,它表明了这一点 '选择是一个名为SEL(或“sel”)的特殊标签,对应于当前选择。您可以使用常量SEL_FIRST和SEL_LAST来引用选择。如果没有选择,Tkinter会引发一个TclError异常。'

我的问题:是否有更有效的方法来判断文本窗口小部件中是否有选择,除了欺骗异常,如下面的代码?

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

if seltext:
   # do something with text

2 个答案:

答案 0 :(得分:4)

您可以向窗口小部件询问“sel”标记所包含的文本范围。如果没有选择,则范围将为零长度:

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

答案 1 :(得分: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!");

我不知道他们为什么不让你在那里放第二个索引。我也不知道这对于处理器而言比你的版本更有效,但它似乎比我能说的更加标准。