コード例 #1
0
class sfBanco(QWidget):
    def __init__(self):
        super(sfBanco, self).__init__(None)
        self.logIn()  #Chama tela de Log-In
        self.contas = {}
        self.conta = Conta(0, 0.0)

    def logIn(self):
        self.setGeometry(
            300, 300, 365, 50
        )  #define posição e tamanho da janela, as duplas, respectivamente.
        self.setWindowTitle("Log-In")
        self.cadastroBotao = QPushButton(
            "Cadastrar Conta", self)  #Cria botão e define titulo dele.
        self.cadastroBotao.clicked.connect(
            self.cadastroContas
        )  #Define o que o botão faz quando é clicado, nesse caso chama a funcao 'cadastroContas'.
        self.acessoBotao = QPushButton("Acessar Conta", self)
        self.acessoBotao.clicked.connect(self.acessoContas)
        self.sairBotao = QPushButton("Sair", self)
        self.sairBotao.clicked.connect(self.close)

        self.grid = QGridLayout()  #Inicializa/Cria Layout.
        self.grid.addWidget(
            self.cadastroBotao, 1, 0
        )  #Cria objeto no layout, seus parametros são: o objeto, o numero da linha, e o numero da coluna onde ele vai ficar.
        self.grid.addWidget(self.acessoBotao, 1, 1)
        self.grid.addWidget(
            self.sairBotao, 4, 0, 1, 2
        )  #Aqui, além dos parametros normais, temos mais dois numeros, que são: quantas linhas ele vai ocupar, e quantas colunas, respectivamente.
        self.setLayout(self.grid)  #Define o Layout.

    def cadastroContas(self):
        numConta, ok = QInputDialog.getText(
            self, 'Cadastar Conta', 'Digite o número da conta:'
        )  #Cria dialogo, ele recebe o self da função, o titulo da janela, e a solicitacao do que voce quer.
        if ok:
            if numConta in self.contas:  #Se o numero da conta pego no dialogo acima esta dentro do dicionario "self.contas"
                errAddConta = QMessageBox.warning(
                    self, "Informação",
                    "Já existe uma conta cadastrada com este número!"
                )  #cria popup, para dar alguma informacao, ele recebe o self da função, o titulo da janela, e a mensagem.
                #em 'QMessage.warning' o 'warning' é a definição do icone que aparece junto com a msg do popup
            else:
                conta = Conta(
                    numConta, 0.0
                )  #cria objeto conta, passando o numero da conta e um saldo inicial "0.0"
                self.contas[numConta] = conta.saldo  #cria conta no dicionario.
                scsAddConta = QMessageBox.information(
                    self, "Informação", "Conta cadastrada com sucesso!"
                )  #Cria um popup, com icone diferente.

    def acessoContas(self):
        numAcessoConta, ok = QInputDialog.getText(
            self, 'Acessar Conta',
            'Digite o número da conta:')  #outro dialogo.
        if numAcessoConta in self.contas:
            self.conta = Conta(numAcessoConta, self.contas[numAcessoConta])
            self.visaoGeralCC(
            )  #Para chamar os outros botoes "saldo, saque, etc." qndo clicar para acessar conta
        else:
            errAcsConta = QMessageBox.warning(
                self, "Erro",
                "Não existe uma conta cadastrada com esse número!")

    def visaoGeralCC(
            self):  #Responsavel pelos botoes que aparecem ao acessar conta
        self.setWindowTitle("Visão Geral da Conta")  #redefine titulo da janela

        self.saqueBotao = QPushButton("Saque", self)
        self.saqueBotao.clicked.connect(self.saque)
        self.depositoBotao = QPushButton("Depósito", self)
        self.depositoBotao.clicked.connect(self.deposito)
        self.saldoBotao = QPushButton("Saldo", self)
        self.saldoBotao.clicked.connect(self.saldo)
        self.extratoBotao = QPushButton("Extrato", self)
        self.voltarBotao = QPushButton("Sair", self)
        self.voltarBotao.clicked.connect(self.close)

        self.grid.addWidget(self.saldoBotao, 2, 0)
        self.grid.addWidget(self.extratoBotao, 2, 1)
        self.grid.addWidget(self.saqueBotao, 3, 0)
        self.grid.addWidget(self.depositoBotao, 3, 1)

    def deposito(self):
        valor, ok = QInputDialog.getText(self, 'Depósito',
                                         'Digite o valor desejado:')  #dialogo
        valor = float(valor)
        if ok:
            try:
                self.conta.op_deposito(
                    valor
                )  #chama metodo do arquivo "conta.py",  recebendo o valor do dialogo acima
                self.contas[
                    self.conta.
                    numero] = self.conta.saldo  #Escreve saldo atual no dicionario
                depScs = QMessageBox.information(
                    self, "Informação", "Deposito realizado com sucesso!")
            except ValorInvalidoError:
                depErr = QMessageBox.warning(self, "Erro",
                                             "Valor informado é inválido!")

    def saque(self):
        valor, ok = QInputDialog.getText(self, 'Saque',
                                         'Digite o valor desejado:')  #Dialogo
        valor = float(valor)
        if ok:
            try:
                self.conta.op_saque(
                    valor
                )  #chama metodo do arquivo "conta.py", recebendo o valor do dialogo acima
                self.contas[
                    self.conta.
                    numero] = self.conta.saldo  #Escreve saldo atual no dicionario
                saqScs = QMessageBox.information(
                    self, "Informação", "Saque realizado com sucesso!")
            except ValorInvalidoError:
                depErr = QMessageBox.warning(self, "Erro",
                                             "Valor informado é inválido!")
            except SaldoInsuficienteError:
                depErr = QMessageBox.warning(self, "Erro",
                                             "Saldo insuficiente!")

    def saldo(self):  #Retorna o saldo
        saldoScs = QMessageBox.information(
            self, "Saldo", " Conta: %s \n Saldo: R$ %.2f" %
            (self.conta.numero, self.conta.saldo))