Решение заключается в следующем.Подробнее см. Фрагменты, пример и выходные данные.
- Используйте select_all () , чтобы выделить весь текст, отображаемый в TextInput. Примечание. Если текст отсутствует, то ничего не выбирается.
- Используйте
cursor = (0, 0)
для установки текущей позиции курсора в начале текста - Используйте
focus = True
для передачифокус на TextInput. - Когда TextInput сфокусирован, выбор отменяется.Поэтому мы задерживаем выделение текста с помощью Clock.schedule_once ()
- Заменить on_press на on_release в файле kv, потому что всякий раз, когда нажатие кнопки отпущено, кнопка имеет фокус.
- Добавлены дополнительные коды (
focus: True
, cursor_width: 8
) в файле kv
Ввод текста »API» Примечание
Выбор отменяется, когда TextInput находится в фокусе.Если вам нужно показать выделение, когда TextInput сфокусирован, вам следует отложить (использовать Clock.schedule) вызов функций для выбора текста (select_all, select_text).
Snippets
Python Script
def select_textinput(self, instance):
print("Button Clicked - Select Text")
instance.cursor = (0, 0)
instance.focus = True
Clock.schedule_once(lambda dt: self.select_text(instance, dt=dt), 0.1)
def select_text(self, instance, dt):
instance.select_all()
kv файл
Button:
text: "Click here to select the text input !"
on_release: root.select_textinput(ti)
Пример
main.py
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.clock import Clock
class Main(Screen):
def select_textinput(self, instance):
print("Button Clicked - Select Text")
instance.cursor = (0, 0)
instance.focus = True
Clock.schedule_once(lambda dt: instance.select_all())
class GUI(App):
def build(self):
sm = ScreenManager()
sm.add_widget(Main())
return sm
if __name__ == '__main__':
GUI().run()
gui.kv
#: kivy 1.10.0
<Main>:
name: "main_screen"
BoxLayout:
orientation: 'vertical'
TextInput:
id: ti
focus: True
cursor_width: 8 # Default: 1sp
text: "Try to put the cursor here without clicking"
Button:
text: "Click here to select the text input !"
on_release: root.select_textinput(ti)
Выход