Skip to content

Commit

Permalink
Upload VPL 1
Browse files Browse the repository at this point in the history
Added the final code
  • Loading branch information
mateusadada authored Aug 30, 2024
1 parent 7610ebc commit 66ab0e6
Show file tree
Hide file tree
Showing 4 changed files with 177 additions and 17 deletions.
93 changes: 88 additions & 5 deletions solved_exercises/VPL/1 - Calculadora_MVC/Calculadora_Controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,27 +6,110 @@ class Controller():
__view = None

# Questão 26: (Criar o construtor da classe Controller)
def __init__(self):
self.start()

def start(self):
pass
# Questão 27: (Alocar os objetos model e view)
self.__model = Model()
self.__view = View(self, "Minha Calculadora")

def action_Adicionar(self):
pass
# Questão 28: (Criar o evento que calcula a adição dos valores numéricos)
# (É obrigatório usar tratamento de exceções)
str1 = self.__view.get_Valor1()
str2 = self.__view.get_Valor2()

try:
val1 = float(str1)
val2 = float(str2)

self.__model.set_Valor1(val1)
self.__model.set_Valor2(val2)
self.__model.adiciona_valores()

self.__view.set_Resultado(self.__model.get_Resultado())
except ValueError as ve:
Erro = "Erro: Favor digitar valores numéricos.\n(%s)" % ve
self.__view.show_error(Erro)
print(Erro)
except Exception as ex:
Erro = "Erro fatal: Erro inexperado.\n(%s)" % ex
self.__view.show_error(Erro)
print(Erro)

def action_Subtrair(self):
pass
# Questão 29: (Criar o evento que calcula a subtração dos valores numéricos)
# (É obrigatório usar tratamento de exceções)
str1 = self.__view.get_Valor1()
str2 = self.__view.get_Valor2()

try:
val1 = float(str1)
val2 = float(str2)

self.__model.set_Valor1(val1)
self.__model.set_Valor2(val2)
self.__model.subtrai_valores()

self.__view.set_Resultado(self.__model.get_Resultado())
except ValueError as ve:
Erro = "Erro: Favor digitar valores numéricos.\n(%s)" % ve
self.__view.show_error(Erro)
print(Erro)
except Exception as ex:
Erro = "Erro fatal: Erro inexperado.\n(%s)" % ex
self.__view.show_error(Erro)
print(Erro)

def action_Multiplicar(self):
pass
# Questão 30: (Criar o evento que calcula a multiplicação dos valores numéricos)
# (É obrigatório usar tratamento de exceções)
str1 = self.__view.get_Valor1()
str2 = self.__view.get_Valor2()

try:
val1 = float(str1)
val2 = float(str2)

self.__model.set_Valor1(val1)
self.__model.set_Valor2(val2)
self.__model.multiplica_valores()

self.__view.set_Resultado(self.__model.get_Resultado())
except ValueError as ve:
Erro = "Erro: Favor digitar valores numéricos.\n(%s)" % ve
self.__view.show_error(Erro)
print(Erro)
except Exception as ex:
Erro = "Erro fatal: Erro inexperado.\n(%s)" % ex
self.__view.show_error(Erro)
print(Erro)

def action_Dividir(self):
pass
# Questão 31: (Criar o evento que calcula a divisão dos valores numéricos)
# (É obrigatório usar tratamento de exceções)
str1 = self.__view.get_Valor1()
str2 = self.__view.get_Valor2()

try:
val1 = float(str1)
val2 = float(str2)

self.__model.set_Valor1(val1)
self.__model.set_Valor2(val2)
self.__model.divide_valores()

self.__view.set_Resultado(self.__model.get_Resultado())
except ValueError as ve:
Erro = "Erro: Favor digitar valores numéricos.\n(%s)" % ve
self.__view.show_error(Erro)
print(Erro)
except ZeroDivisionError as zde:
Erro = "Erro: Divisao por zero: %s" % zde
self.__view.show_error(Erro)
print(Erro)
except Exception as ex:
Erro = "Erro fatal: Erro inexperado.\n(%s)" % ex
self.__view.show_error(Erro)
print(Erro)
18 changes: 14 additions & 4 deletions solved_exercises/VPL/1 - Calculadora_MVC/Calculadora_Model.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,35 @@ class Model():
__resultado=None

# Questão 01: (Criar o construtor da classe Model)
def __init__(self):
self.__valor1=0
self.__valor2=0.0
self.adiciona_valores()

# Questão 02: (Criar o método set_Valor1)
def set_Valor1(self, val1):
self.__valor1=val1

# Questão 03: (Criar o método set_Valor2)
def set_Valor2(self, val2):
self.__valor2=val2

# Questão 04: (Criar o método get_Resultado)
def get_Resultado(self):
return(self.__resultado)

def adiciona_valores(self):
pass
# Questão 05: (Completar o código para adicionar os valores)
self.__resultado=(self.__valor1 + self.__valor2)

def subtrai_valores(self):
pass
# Questão 06: (Completar o código para subtrair os valores)
self.__resultado=(self.__valor1 - self.__valor2)

def multiplica_valores(self):
pass
# Questão 07: (Completar o código para multiplicar os valores)
self.__resultado=(self.__valor1 * self.__valor2)

def divide_valores(self):
pass
# Questão 08: (Completar o código para dividir os valores)
self.__resultado=(self.__valor1 / self.__valor2)
79 changes: 71 additions & 8 deletions solved_exercises/VPL/1 - Calculadora_MVC/Calculadora_View.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from PyQt5.QtCore import *
from PyQt5.QtGui import *

class View(Questão 09): # (Complete o código que declara a classe View)
class View(QWidget): # (Complete o código que declara a classe View)
__Lb_valor1 = None
__Lb_valor2 = None
__Lb_result = None
Expand All @@ -17,57 +17,120 @@ class View(Questão 09): # (Complete o código que declara a classe View)
__Cntr = None

# Questão 10: (Criar o construtor da classe View)
def __init__(self, Cntr, Str="Janela"):
super().__init__()
self.__Cntr=Cntr
self.setWindowTitle(Str)
self.setGeometry(320, 160, 10, 10)

self.setAutoFillBackground(True)
p = self.palette()
p.setColor(self.backgroundRole(), QColor('orange'))
self.setPalette(p)

self.inicialize()

def closeEvent(self, event):
pass
# Questão 11: (Qual o código necessário para encerrar o programa no canto
# superior direito da janela)
print("Destruindo janela...")
self.destroy()
sys.exit(0)

# Questão 12: (Criar o método get_Valor1)
def get_Valor1(self):
return(self.__LEd_valor1.text())

# Questão 13: (Criar o método get_Valor2)
def get_Valor2(self):
return(self.__LEd_valor2.text())

# Questão 14: (Criar o método set_Resultado)
def set_Resultado(self, resultado):
self.__LEd_result.setText("%5.2f" % resultado)

def action_Bt_adic(self):
pass
# Questão 15: (Criar o evento que calcula a adição dos valores numéricos)
self.__Cntr.action_Adicionar()

def action_Bt_sub(self):
pass
# Questão 16: (Criar o evento que calcula a subtração dos valores numéricos)
self.__Cntr.action_Subtrair()

def action_Bt_mult(self):
pass
# Questão 17: (Criar o evento que calcula a multiplicação dos valores numéricos)
self.__Cntr.action_Multiplicar()

def action_Bt_div(self):
pass
# Questão 18: (Criar o evento que calcula a divisão dos valores numéricos)
self.__Cntr.action_Dividir()

def show_error(self, Erro):
pass
# Questão 19: (Criar o métodp que mostra uma mensagem de erro na tela com QMessageBox)
QMessageBox.critical(self, "Janela de Erro", Erro)

def inicialize(self):
Grid=QGridLayout()

# Questão 20: (Realize a alocação dos componentes gráficos)
p1 = self.palette()
p1.setColor(self.backgroundRole(), Qt.yellow)

self.__Lb_valor1=QLabel(self, text="Valor1:", width=12)
self.__Lb_valor2=QLabel(self, text="Valor2:", width=12)
self.__Lb_result = QLabel(self, text="Resultado:", width=12)

self.__Lb_valor1.setAlignment(Qt.AlignRight)
self.__Lb_valor2.setAlignment(Qt.AlignRight)
self.__Lb_result.setAlignment(Qt.AlignRight)

self.__Lb_valor1.setContentsMargins(4, 4, 4, 4)
self.__Lb_valor2.setContentsMargins(4, 4, 4, 4)
self.__Lb_result.setContentsMargins(4, 4, 4, 4)

self.__Lb_valor1.setAutoFillBackground(True)
self.__Lb_valor1.setPalette(p1)

self.__Lb_valor2.setAutoFillBackground(True)
self.__Lb_valor2.setPalette(p1)

self.__Lb_result.setAutoFillBackground(True)
self.__Lb_result.setPalette(p1)

self.__LEd_valor1=QLineEdit(self, width=28)
self.__LEd_valor2=QLineEdit(self, width=28)
self.__LEd_result=QLineEdit(self, width=28)

self.__Bt_adic=QPushButton(self, text='Adicionar')
# Questão 21: (Conectar o botão Bt_adic ao evento que realiza a adição dos valores numéricos)
self.__Bt_adic.clicked.connect(self.action_Bt_adic)

self.__Bt_sub = QPushButton(self, text='Subtrair')
# Questão 22: (Conectar o botão Bt_sub ao evento que realiza a subtração dos valores numéricos)
self.__Bt_sub.clicked.connect(self.action_Bt_sub)

self.__Bt_mult = QPushButton(self, text='Multiplicar')
# Questão 23: (Conectar o botão Bt_mult ao evento que realiza a multiplicação dos valores numéricos)
self.__Bt_mult.clicked.connect(self.action_Bt_mult)

self.__Bt_div = QPushButton(self, text='Dividir')
# Questão 24: (Conectar o botão Bt_div ao evento que realiza a divisão dos valores numéricos)
self.__Bt_div.clicked.connect(self.action_Bt_div)

############# Grid #############
# Questão 25: (Acrescentar os componentes gráficos na Tela)
Grid.addWidget(self.__Lb_valor1, 0, 0)
Grid.addWidget(self.__Lb_valor2, 1, 0)

Grid.addWidget(self.__LEd_valor1, 0, 1, 1, 4)
Grid.addWidget(self.__LEd_valor2, 1, 1, 1, 4)

Grid.addWidget(self.__Bt_adic, 2, 1)
Grid.addWidget(self.__Bt_sub, 2, 2)
Grid.addWidget(self.__Bt_mult, 2, 3)
Grid.addWidget(self.__Bt_div, 2, 4)

Grid.addWidget(self.__Lb_result, 3, 0)
Grid.addWidget(self.__LEd_result, 3, 1, 1, 4)

self.setLayout(Grid)
self.show()
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,7 @@
from Calculadora_Controller import Controller

# Questão 32: (Aloque um objeto da classe Controller para iniciar o programa)
if __name__ == "__main__":
App=QApplication(sys.argv)
Cntr=Controller()
App.exec_()

0 comments on commit 66ab0e6

Please sign in to comment.