Я пытаюсь указать формат даты для MDTextField в приложении, которое я разрабатываю с KivyMD. Формат такого поля: «дд/мм/гггг».
Что я пытаюсь сделать, так это то, что после того, как первые 2 числа будут написаны, «/» будет записано автоматически, и курсор переместится на последнюю позицию справа от «/» (например, «21/»). Таким же образом, после записи двух других цифр после первой «/», будет написана вторая «/», и курсор снова переместится в конец (например, «21/09/»).
Мне удалось отобразить оба символа «/», тем не менее, это курсор, который я не могу поместить в нужное место. Мой код следующий:
def apply_date_format(self):
# delete '/' if len is equal or less than 2 and final character is /
if len(self.ids.viajeInicio.text) =< 2 and (self.ids.viajeInicio.text).endswith('/'):
self.ids.viajeInicio.text = (self.ids.viajeInicio.text[:-1])
# first '/'
elif len(self.ids.viajeInicio.text) == 2 and (self.ids.viajeInicio.text).isnumeric():
self.ids.viajeInicio.text= self.ids.viajeInicio.text + "/"
# second '/'
elif len(self.ids.viajeInicio.text) == 5 and (self.ids.viajeInicio.text[3:5]).isnumeric():
self.ids.viajeInicio.text= self.ids.viajeInicio.text + "/"
# delete last '/' if len is <= 5 and last character is '/'
elif len(self.ids.viajeInicio.text) > 3 and len(self.ids.viajeInicio.text) <= 5 \
and (self.ids.viajeInicio.text).endswith('/'):
self.ids.viajeInicio.text = (self.ids.viajeInicio.text[:-1])
MDTextField имеет идентификатор viajeInicio, а функция apply_date_format вызывается для события on_text. Код следующий:
MDTextField:
id: viajeInicio
hint_text: 'Ingresar Fecha de Inicio del Viaje'
pos_hint: {"x":0, "top":1}
helper_text: 'Formato de fecha: dd/mm/aaaa'
helper_text_mode: 'on_focus'
required: True
on_text:
root.apply_date_format()
Как я могу переместить позицию курсора в конец строки после записи «/». Более того, есть ли лучший способ выполнить желаемую задачу?
Заранее большое спасибо