MAB225 – Computação II – Aula 16/06/2011
MAB 225 - Computação II - Fabio Mascarenhas
Layout em linhas / Contas com salvar e
carregar em arquivo (14/06/2011)
Layout em linhas
from Tkinter import *
f = Frame()
sf1 = Frame(f) # Linha 1
sf2 = Frame(f) # Linha 2
sf3 = Frame(f) # Linha 3
sf4 = Frame(f) # Linha 4
for sf in [sf1, sf2, sf3, sf4]:
sf.pack()
# Linha 1
l1 = Label(sf1)
l1["text"] = "Linha 1"
l1.pack()
# Linha 2
l2 = Label(sf2)
l2["text"] = "Linha 2"
ct1 = Entry(sf2)
l2.pack(side = "left")
ct1.pack(side = "left")
# Linha 3
l3 = Label(sf3)
l3["text"] = "Linha 3"
ct2 = Entry(sf3)
l3.pack(side = "left")
ct2.pack(side = "left")
# Linha 4
b1 = Button(sf4)
b1["text"] = "Botao 1"
b2 = Button(sf4)
b2["text"] = "Botao 2"
b1.pack(side = "left")
b2.pack(side = "left")
for ctrl in [l1, l2, l3, ct1, ct2, b1, b2]:
ctrl["font"] = "Arial 20"
f.pack()
mainloop()
Contas com salvar e
carregar em arquivo
from datetime import date
def hoje():
return str(date.today())
class Conta:
def __init__(self, numero, nome, saldo = 0, lancamentos = []):
self.numero = numero
self.correntista = nome
self.saldo = saldo
self.lancamentos = lancamentos
def __repr__(self):
return "Conta(%s,%s,%s,%s)" % (repr(self.numero),\
repr(self.correntista),\
repr(self.saldo),\
repr(self.lancamentos))
def alterarNome(self, nome):
self.correntista = nome
salva_contas(contas)
def deposito(self, valor, msg = "deposito"):
self.lancamentos.append((hoje(), msg, valor))
self.saldo = self.saldo + valor
salva_contas(contas)
def saque(self, valor, msg = "saque"):
self.lancamentos.append((hoje(), msg, -valor))
self.saldo = self.saldo - valor
salva_contas(contas)
def transferencia(self, outra, valor):
self.saque(valor, "transferencia para %s" % outra.numero)
outra.deposito(valor, "transferencia de %s" % self.numero)
def extrato(self, data):
linhas = []
saldo = self.saldo
i = len(self.lancamentos) - 1
while i >= 0 and self.lancamentos[i][0] >= data:
saldo = saldo - self.lancamentos[i][2]
i = i - 1
i = i + 1
while i < len(self.lancamentos):
datalanc, desc, val = self.lancamentos[i]
saldo = saldo + val
linhas.append("%s %-34s%10.2f%10.2f" % (datalanc, desc, val, saldo))
i = i + 1
return linhas
def salva_contas(contas, arq = "contas.repr"):
f = open(arq, "w+")
try:
f.write(repr(contas))
finally:
f.close()
def le_contas(arq = "contas.repr"):
f = open(arq)
cs = None
try:
cs = eval(f.read())
finally:
f.close()
return cs
try:
contas = le_contas()
except IOError:
contas = eval("""\
{'768': Conta('768','Cicrano',70,\
[('2011-05-01', 'abertura', 70)]),
'123': Conta('123','Fulano',90.0,\
[('2011-04-20', 'abertura', 100),\
('2011-05-10', 'saque', -30),\
('2011-05-15', 'deposito', 20),\
('2011-05-29', 'transferencia para 456', -50),\
('2011-05-30', 'deposito', 50.0)]),\
'456': Conta('456','Beltrano',100,\
[('2011-04-12', 'abertura', 50),\
('2011-05-29', 'transferencia de 123', 50)])}\
""")