Во-первых, я хотел бы сказать, что я новичок в этом языке, но уже довольно глубоко изучил свое приложение-калькулятор для простых уравнений физики. Мой план состоит в том, чтобы сначала создать домашний экран с еще одним экраном вычислений, и как только он станет настолько хорошим, насколько я смогу его получить, я перейду к остальным экранам.
На этом конкретном экране (и, вероятно, большинство других мне придется использовать эту функцию) Я установил собственный TextInput, который допускает только числа 0–9 и одну десятичную точку. Однако сейчас я ломаю себе голову, пытаясь выяснить, как включить ОТРИЦАТЕЛЬНЫЙ ЗНАК в разрешенный набор входных данных.
Вот код: (Я нашел его с открытым исходным кодом, я понимаю логистику, но Я еще не полностью понял функцию re.compile)
class FloatInput(TextInput):
pat = re.compile('[^0-9]') <----THIS IS WHERE I TRIED TO ADD ^[+-]? w/ NO LUCK :(
def insert_text(self, substring, from_undo=False):
pat = self.pat
if '.' in self.text:
s = re.sub(pat, '', substring)
else:
s = '.'.join([re.sub(pat, '', s) for s in substring.split('.', 1)])
return super(FloatInput, self).insert_text(s, from_undo=from_undo)