diff --git a/TermTk/TTkWidgets/lineedit.py b/TermTk/TTkWidgets/lineedit.py index 2d3c22c9..d916e7c1 100644 --- a/TermTk/TTkWidgets/lineedit.py +++ b/TermTk/TTkWidgets/lineedit.py @@ -66,8 +66,9 @@ class TTkLineEdit(TTkWidget): self._text = TTkString(kwargs.get('text' , '' )) self._inputType = kwargs.get('inputType' , TTkK.Input_Text ) super().__init__(*args, **kwargs) - if self._inputType & TTkK.Input_Number and\ - not self._text.lstrip('-').isdigit(): self._text = TTkString() + if ( self._inputType & TTkK.Input_Number and + not self._isFloat(self._text)): + self._text = TTkString('0') self.setMaximumHeight(1) self.setMinimumSize(1,1) self.setFocusPolicy(TTkK.ClickFocus + TTkK.TabFocus) @@ -181,6 +182,15 @@ class TTkLineEdit(TTkWidget): self.update() return True + @staticmethod + def _isFloat(num): + try: + float(num) + return True + except: + return False + + def pasteEvent(self, txt:str): txt = TTkString().join(txt.split('\n')) @@ -198,8 +208,8 @@ class TTkLineEdit(TTkWidget): post = text.substring(fr=self._cursorPos) text = pre + txt + post - if self._inputType & TTkK.Input_Number and \ - not text.lstrip('-').isdigit(): + if ( self._inputType & TTkK.Input_Number and + not self._isFloat(text) ): return True self.setText(text, self._cursorPos+txt.termWidth()) @@ -244,8 +254,8 @@ class TTkLineEdit(TTkWidget): self._text = self._text.substring(to=prev) + self._text.substring(fr=self._cursorPos) self._cursorPos = prev - if self._inputType & TTkK.Input_Number and \ - not self._text.lstrip('-').isdigit(): + if ( self._inputType & TTkK.Input_Number and + not self._isFloat(self._text) ): self.setText('0', 1) self._pushCursor() @@ -267,8 +277,8 @@ class TTkLineEdit(TTkWidget): post = text.substring(fr=self._cursorPos) text = pre + evt.key + post - if self._inputType & TTkK.Input_Number and \ - not text.lstrip('-').isdigit(): + if ( self._inputType & TTkK.Input_Number and + not self._isFloat(text) ): return True self.setText(text, self._cursorPos+1)