TextInput: неожиданное движение курсора при изменении font_size - PullRequest
0 голосов
/ 01 апреля 2019

При вводе текста в Kivy курсор изменяется на конец текста каждый раз при изменении font_size:

from kivy.app import App
from kivy.lang import Builder

KV = """
TextInput
    on_touch_down: self.font_size+=1
"""
class MyApp(App):
    def build(self):
        self.root = Builder.load_string(KV)

MyApp().run()

Есть ли способ исправить или обойти это поведение TextInput?

1 Ответ

0 голосов
/ 01 апреля 2019
  • Объявление атрибута класса, prev_cursor в class MyApp
  • Реализовать метод reset_cursor() для восстановления prev_cursor до курсора TextInput
  • on_touch_down событие, сохранение текущей позиции курсора
  • on_touch_up событие, используйте Kivy Clock.schedule_once() для вызова метода reset_cursor()

Пример

main.py

from kivy.app import App
from kivy.lang import Builder

KV = """
#:import Clock kivy.clock.Clock

TextInput:
    on_touch_down:
        app.prev_cursor = self.cursor
        self.font_size += 1
    on_touch_up:
        Clock.schedule_once(lambda dt: app.reset_cursor(), 0.1)

"""


class MyApp(App):
    prev_cursor = ()

    def build(self):
        self.root = Builder.load_string(KV)

    def reset_cursor(self):
        self.root.cursor = self.prev_cursor


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