【发布时间】:2021-01-08 00:51:30
【问题描述】:
我正在尝试为我正在使用 KivyMD 开发的应用程序上的 MDTextField 提供日期格式。此类字段的格式为'dd/mm/yyyy'。
我想要做的是,一旦写入前 2 个数字,将自动写入“/”,光标将跳转到“/”右侧的最后一个位置(例如“21/”) .同理,在第一个'/'后面写入其他2个数字后,将写入第二个'/',光标将再次移动到末尾(例如'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 的 ID 为 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()
如何在写入“/”后将光标位置移动到字符串的末尾。此外,有没有更好的方法来完成所需的任务?
提前非常感谢
【问题讨论】:
标签: python kivy kivy-language cursor-position kivymd