Есть ли эффективный способ узнать, выделен ли текст в виджете Tkinter Text? - PullRequest
2 голосов
/ 09 декабря 2010

На этой странице, описывающей текстовый виджет Tkinter , указано, что «Выбор - это специальный тег с именем 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 ]

5 голосов
/ 09 декабря 2010

Вы можете запросить у виджета диапазон текста, который включает в себя тег sel. Если выбор отсутствует, диапазон будет иметь нулевую длину:

if txt.tag_ranges("sel"):
    print "there is a selection"
else:
    print "there is no selection"
1 голос
/ 22 мая 2014

Вот способ проверить, выбрано ли указанное местоположение.

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!");

Я не знаю, почему они не позволяют вам добавить второй индекс туда.Я также не знаю, что это более эффективно для процессора, чем ваша версия, но, похоже, он более стандартен, чем я могу сказать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...