Легко получить весь текст из виджета TextInput. Но что, если кто-то хочет получить определенную порцию только в определенной позиции? Представьте, что вы получаете текст точно от позиции курсора x до позиции курсора x в абзаце?
Я смог это сделать, но то, как я его использовал, выглядит как уловка. Интересно, есть ли подходящий метод для этого? (не могу найти подходящую функцию для этого в документации)
Например: я хотел получить слово, набираемое в данный момент (но это можно применить и к поиску / замене слова f.e. и т. Д.). Поэтому я использовал необработанный код в методе Text_put on_double_tap () без последней части (я не хотел, чтобы он выбирал слово визуально). Итак, во-первых, я установил альфа-цвет selection_color в ноль (чтобы он был невидим), сделал selection_text с позиции x до x, отменил выделение и вернул альфа-цвет обратно к значению по умолчанию.
Но это звучит неправильно, это не питонский способ делать вещи, это скорее уловка. Есть ли более питонский / правильный способ сделать это?
Это текущий код, который я использую для выбора текущего набираемого слова и получения строки (это метод внутри класса экземпляра виджета TextInput):
#code from on_double_tap()
def select_word(self):
#Code from the on_double_tap() method inside TextInputwidget
ci = self.cursor_index()
cc = self.cursor_col
line = self._lines[self.cursor_row]
len_line = len(line)
start = max(0, len(line[:cc]) - line[:cc].rfind(u' ') - 1)
end = line[cc:].find(u' ')
end = end if end > - 1 else (len_line - cc)
#Now this is the part I added
#Save de default selection_color before hiding it with alpha 0
selection_color = self.selection_color
self.selection_color=[0,0,0,0]
self.select_text(ci - start, ci + end)
word = self.selection_text
self.cancel_selection()
#Restore default selection_color
self.selection_color = selection_color
return(word)
Сокрытие не кажется лучшим способом сделать это, не так ли? Есть ли способ лучше?
Спасибо