def add_fiat_edit(self): self.fiat_e = AmountEdit(self.fiat_unit) self.btc_e = self.win.amount_e grid = self.btc_e.parent() def fiat_changed(): try: fiat_amount = Decimal(str(self.fiat_e.text())) except: self.btc_e.setText("") return exchange_rate = self.exchanger.exchange(Decimal("1.0"), self.fiat_unit()) if exchange_rate is not None: btc_amount = fiat_amount / exchange_rate self.btc_e.setAmount(int(btc_amount * Decimal(100000000))) self.btc_e.textEdited.emit("") self.fiat_e.textEdited.connect(fiat_changed) def btc_changed(): btc_amount = self.btc_e.get_amount() if btc_amount is None: self.fiat_e.setText("") return fiat_amount = self.exchanger.exchange( Decimal(btc_amount) / Decimal(100000000), self.fiat_unit()) if fiat_amount is not None: pos = self.fiat_e.cursorPosition() self.fiat_e.setText("%.2f" % fiat_amount) self.fiat_e.setCursorPosition(pos) self.btc_e.textEdited.connect(btc_changed) self.btc_e.frozen.connect( lambda: self.fiat_e.setFrozen(self.btc_e.isReadOnly())) self.win.send_grid.addWidget(self.fiat_e, 4, 3, Qt.AlignHCenter)