[Python] Kivy - Mudar posição do cursor do teclado (caret) após formatar textinput com máscara

Discussão em 'Python' iniciado por Stack, Julho 5, 2025.

  1. Stack

    Stack Membro Participativo

    Em um TextInput no qual o usuário digita o CPF, controlo a validação e formatação em um evento on_Text. Após ter digitado os 11 dígitos e validado o CPF, eu formato com a máscara, porém, após formatar, o cursor fica parado na posição do 11º caractere. Tento mover o cursor usando a propriedade "cursor" que o TextInput disponibiliza, mas não surte efeito.

    Código de criação do componente em KVLang:

    TextInputCpf:
    id: txt_cpf
    multiline: False
    size_hint_x: .16
    pos_hint: { 'x':.02 , 'center_y':.66 }


    Código Python:

    class TextInputCpf(TextInput):

    def on_text(self, instance, value):
    if len(value) == 11:
    if uteis.validar_cpf(value):
    self.text = uteis.formatar_cpf(value)
    self.cursor = (len(self.text), 0)

    # função simples de formatação
    # está no arquivo uteis.py
    def formatar_cpf(cpf: str) -> str:
    return '{}.{}.{}-{}'.format(cpf[:3], cpf[3:6], cpf[6:9], cpf[9:11])

    Continue reading...

Compartilhe esta Página