#Calcul.py class Calcul(): _current = 0 _buffer = 0 _show = 0 _dec = False _decnum = 1 _last_sign = None _input = True def press(self, widget, data): if self._last_sign == '-': self.__minus = -1 else: self.__minus = 1 if self._input != True: self._current = 0 self._input = True __minus = 1 if ~self._dec : self._current = float(self._current*10+self.__minus*data) else : self._current = float(self._current+self.__minus*data/self._decnum*10) self._decnum=+1 self._show = self._current print("current:", self._current, "buffer:", self._buffer,\ "show:", self._show, "last sign:", self._last_sign) def clear(self, widget): self._current = 0 self._buffer = 0 self._show = 0 self._dec = False self._decnum = 1 self._last_sign = None self._input = True print("current:", self._current, "buffer:", self._buffer,\ "show:", self._show, "last sign:", self._last_sign) def back(self, widget): self._current = float(str(self._current)[:-1]) print("current:", self._current, "buffer:", self._buffer,\ "show:", self._show, "last sign:", self._last_sign) def dot(self, widget): if self._decnum == 1: self._dec = True def plus(self, widget): if self._last_sign in ('+', '-', '*', '/', None): self.equals(widget) self._input = False self._last_sign = '+' print("current:", self._current, "buffer:", self._buffer,\ "show:", self._show, "last sign:", self._last_sign) def minus(self, widget): if self._last_sign in ('+', '-', '*', '/', None): self.equals(widget) self._input = False self._last_sign = '-' print("current:", self._current, "buffer:", self._buffer,\ "show:", self._show, "last sign:", self._last_sign) def multiply(self, widget): if self._last_sign in ('+', '-', '*', '/', None): self.equals(widget) self._input = False self._last_sign = '*' print("current:", self._current, "buffer:", self._buffer,\ "show:", self._show, "last sign:", self._last_sign) def divide(self, widget): if self._last_sign in ('+', '-', '*', '/', None): self.equals(widget) self._input = False self._last_sign = '/' print("current:", self._current, "buffer:", self._buffer,\ "show:", self._show, "last sign:", self._last_sign) def equals(self, widget): if self._last_sign == None: self._buffer = self._current elif self._last_sign in ('+', '+='): self._buffer = self._buffer + self._current self._last_sign = '+=' elif self._last_sign in ('-', '-='): self._buffer = self._buffer + self._current self._last_sign = '-=' elif self._last_sign in ('*' '*='): self._buffer = self._buffer * self._current self._last_sign = '*=' elif self._last_sign in ('/', '/='): self._buffer = self._buffer / self._current self._last_sign = '/=' self._show = self._buffer self._input = False print("current:", self._current, "buffer:", self._buffer,\ "show:", self._show, "last sign:", self._last_sign)