TextInput и canvas
Есть функция для проверки валидности номера телефона, которая по нажатию кнопки должна добавить к text input'у красные рамки, если номер не валиден. Функция работает, но, если text input выбран т.е. в фокусе, то после первого нажатия text input просто убирается из фокуса, и только после второго нажатия появляется рамка. Как исправить?
def check_num(self, num, t: TextInput):
pattern = re.compile(r'^\+79\d{9}$')
match = pattern.match(num)
if match:
self.send_code(match.group())
else:
with t.canvas:
Color(1, 0, 0, 1)
Line(points=[t.x, t.y, t.x, t.top, t.right, t.top, t.right, t.y], width=1.1, cap='square', close=True)
Код .kv файла:
TextInput:
id: num
hint_text: '+7XXXXXXXXXX'
size_hint_y: None
height: self.minimum_height
on_text: self.canvas.clear()
Button:
text: 'Отправить код'
width: self.parent.width * .5
height: self.parent.height * .8
size_hint: None, None
on_release: root.check_num(num.text, num)