FASE 1:
- Python 3
-Tkinter
05/07/2017 13:53
<syntaxhighlight lang="python3" line="1"> from tkinter import ttk from tkinter import * from functools import partial from random import randint
janela = Tk() janela.geometry("600x600") janela.title("Easy Buy")
v = []
- importa as imagens usadas no programa
x = PhotoImage(file ="alerta.gif") p = x.subsample(3, 3)
- cria a tabela principal
frame_tabela = Frame(janela) tabela = ttk.Treeview(selectmode = 'browse', show = 'headings', height=24) ysb = ttk.Scrollbar(orient=VERTICAL, command = tabela.yview) tabela['yscroll'] = ysb.set ysb.pack(side = RIGHT, pady = 50, fill = Y)
class Produto(object):
def __init__(self, name, qtd, preco, marca, codigo):
self.s = {"nome" : name, "qnt" : qtd, "marca" : marca, "preco" : preco, "codigo" : codigo}
def muda(self, name, qtd, forn, preco):
self.s["nome"] = name
self.s["qnt"] = qtd
self.s["fornecedor"] = forn
self.s['preco'] = preco
- -----------------------------------------------------------------------------------------------------------------------
- Tela de Alerta(aberta quando algum problema ocorre)
def Alerta(texto):
tela_alerta = Toplevel()
#Fecha a tela de alerta
def fechar():
tela_alerta.destroy()
tela_alerta.title("Alerta!")
tela_alerta.geometry("400x150")
foto = Label(tela_alerta, image = p).place(x = 30, y = 30)
texto_de_alerta = Label(tela_alerta, text = texto, font ="15").place(x = 150, y = 30)
btn = Button(tela_alerta, text = "OK", width = 10, height = 1, command = fechar).place(x =290, y = 120)
tela_alerta.mainloop()
- -----------------------------------------------------------------------------------------------------------------------
- Le o arquivo de dados e armazena:
def Leitura_arquivo(pesquisa, m):
arquivo = open("produtos.txt", "r")
produtos = arquivo.readlines()
for i in produtos:
lista = i.split()
if lista[m] == pesquisa:
return True
else:
return False
- ATUALIZATAB
- ---------------------------------------------------------------------------------------------------------------------
def att():
arquivo = open("produtos.txt", "r")
att_tabela = arquivo.readlines()
for i in att_tabela:
d = i.split()
tabela.insert("",'end',text= "L1",values = (d[0], d[1], d[2], d[3], d[4]))
- -----------------------------------------------------------------------------------------------------------------------
- CREATE
def clickcriar():
def clickadd():
nome = inname.get()
quantidade = inqnt.get()
preco = inpreco.get()
marca = inmarca.get()
codigo = incodigo.get()
flag = False;
if nome == "" or preco == "" or marca == "":
Alerta("Preencha todos os campos!")
flag = True
flag = Leitura_arquivo(nome, 0)
if flag == True:
Alerta("O produto "+ nome +" já existe. \n Tente outro nome!")
else:
arquivo = open("produtos.txt", "a")
lista = []
lista.append(nome + " ")
lista.append(quantidade +" ")
lista.append(preco + " ")
lista.append(marca + " ")
lista.append(codigo)
if lista[0][0] != ' ' and lista[1][0] != ' ' and lista[2][0] != ' ' and lista[3][0] != ' ' :
arquivo.writelines(lista)
arquivo.write("\n")
else :
Alerta("Não insira espaço no inicio")
arquivo.close()
v.append(Produto(nome, quantidade, preco, marca, codigo))
tabela.insert("",'end',text= "L1",values=(nome, quantidade, preco, marca, codigo))
janelacriar.destroy()
return
janelacriar = Toplevel()
janelacriar.geometry("300x200")
janelacriar.title("Novo produto")
nome = Label(janelacriar, text = "Nome do produto:").place(x = 5, y = 5)
inname = Entry(janelacriar)
inname.place(x = 120, y = 5)
qnt = Label(janelacriar, text = "Quantidade:").place(x = 5, y = 30)
inqnt = Spinbox(janelacriar, from_ = 0, to = 1000)
inqnt.place(x = 120, y = 30)
preco = Label(janelacriar, text = "Preço: R$").place(x = 5, y = 55)
inpreco = Entry(janelacriar)
inpreco.place(x = 120, y = 55)
marca = Label(janelacriar, text = "Marca/Fornecedor:").place(x = 5, y = 80)
inmarca = Entry(janelacriar)
inmarca.place(x = 120, y = 80)
codigo = Label(janelacriar, text = "Codigo do produto:").place(x = 5, y = 105) incodigo = Entry(janelacriar) incodigo.place(x = 120, y = 105)
btnadd = Button(janelacriar, text = "Confirmar", command = clickadd).place(x = 200, y = 160) janelacriar.mainloop()
- -----------------------------------------------------------------------------------------------------------------------
- RECOUVER(pesquisa um produto já existente)
def clickpesquisa():
if metodo.get() == "Nome":
m = 0
else:
m = 4
pesquisa = inpesquisa.get()
flag = False
flag = Leitura_arquivo(pesquisa, m)
if flag == True and pesquisa != "":
tabelaprodutos = tabela.get_children()
for i in tabelaprodutos:
x = tabela.item(i, "value")
if pesquisa == x[m]:
tabela.selection_set(i)
break
else:
status["text"] = pesquisa + " não encontrado"
status.place(x = 5, y = 30)
status["fg"] = "red"
- -----------------------------------------------------------------------------------------------------------------------
- UPDATE
def clickeditar(ANCHOR):
def clickadd():
nome = inname.get()
quantidade = inqnt.get()
preco = inpreco.get()
marca = inmarca.get()
codigo = incodigo.get()
arquivo = open("produtos.txt", "r")
produtos = arquivo.readlines()
arquivo.close()
arquivo = open("produtos.txt", "w")
for i in produtos:
lista = i.split()
if lista[0] == pesquisa:
arquivo.writelines(nome + " " + quantidade + " " + preco + " " + marca+ " " + codigo+ "\n")
else:
arquivo.writelines(i)
x = tabela.selection()[0]
tabela.delete(x)
tabela.insert("",'end',text= "L1",values=(nome, quantidade, preco, marca, codigo))
janelaeditar.destroy()
janelaeditar = Toplevel()
janelaeditar.geometry("300x200")
janelaeditar.title("Editar")
nome = Label(janelaeditar, text = "Nome do produto:").place(x = 5, y = 5)
inname = Entry(janelaeditar)
inname.place(x = 120, y = 5)
qnt = Label(janelaeditar, text = "Quantidade:").place(x = 5, y = 30)
inqnt = Spinbox(janelaeditar, from_ = 0, to = 1000)
inqnt.place(x = 120, y = 30)
preco = Label(janelaeditar, text = "Preço: R$").place(x = 5, y = 55)
inpreco = Entry(janelaeditar)
inpreco.place(x = 120, y = 55)
marca = Label(janelaeditar, text = "Marca/Fornecedor:").place(x = 5, y = 80)
inmarca = Entry(janelaeditar)
inmarca.place(x = 120, y = 80)
codigo = Label(janelaeditar, text = "Codigo do produto:").place(x = 5, y = 105)
incodigo = Entry(janelaeditar)
incodigo.place(x = 120, y = 105)
x = tabela.selection()[0]
y = tabela.item(x, "values")
pesquisa = y[0]
for i in v:
if i.s["nome"] == pesquisa:
inname.insert(END, i.s["nome"])
inqnt.insert(0, i.s["qnt"])
inpreco.insert(END, i.s["preco"])
inmarca.insert(END, i.s["marca"])
incodigo.insert(END, i.s["codigo"])
btnadd = Button(janelaeditar, text = "Confirmar", command = clickadd).place(x = 200, y = 160)
janelaeditar.mainloop()
- -----------------------------------------------------------------------------------------------------------------------
- DELETE
def delete():
x = tabela.selection()[0]
y = tabela.item(x, "values")
pesquisa = y[0]
arquivo = open("produtos.txt", "r")
produtos = arquivo.readlines()
arquivo.close()
arquivo = open("produtos.txt", "w")
for i in produtos:
lista = i.split()
if lista[0] != pesquisa:
arquivo.writelines(i)
arquivo.close()
x = tabela.selection()[0]
tabela.delete(x)
#-----------------------------------------------------------------------------------------------------------------------
- Configurações da tabela:
btntabela = Button(janela, text = "Delete", command = delete) btntabela.place(x = 525, y = 5) tabela.place(x= 5, y = 50) tabela["columns"] = ("1", "2", "3", "4", "5") tabela['show'] = 'headings' tabela.column("1", width=118, anchor='c') tabela.column("2", width=118, anchor='c') tabela.column("3", width=118, anchor='c') tabela.column("4", width=118, anchor='c') tabela.column("5", width=116, anchor='c') tabela.heading("1", text="Nome") tabela.heading("2", text="Quantidade") tabela.heading("3", text="Preço") tabela.heading("4", text="Marca") tabela.heading("5", text="Codigo")
- sorting da tabela:
- CREATE
btncriar = Button(janela, text = "Adicionar novo produto", command = clickcriar).place(x = 355, y = 5)
- RECOUVER
inpesquisa = Entry(janela, width = 13) inpesquisa.place(x = 5, y = 10) btpesquisa = Button(janela, width = 10, height = 1, text = "pesquise", command = clickpesquisa) btpesquisa.place(x = 220, y =5) status = Label(janela) metodo = StringVar(janela) metodo.set("Nome") metodopesquisa = OptionMenu(janela, metodo, "Nome", "Codigo").place(x = 130, y = 5)
- UPDATE
btneditar = Button(janela, text = "Editar", command = lambda tabela = tabela: clickeditar(ANCHOR)).place(x = 5, y = 560) att() janela.mainloop() </syntaxhighlight>
16/06/2017
<syntaxhighlight lang="python3" line="1"> from tkinter import ttk from tkinter import * from functools import partial
janela = Tk() janela.geometry("600x600") v = []
def clickcarrinho(botao):
print(botao["text"])
class Produto(object):
def __init__(self, name, qtd, preco, marca, codigo):
self.s = {"nome" : name, "qnt" : qtd, "marca" : marca, "preco" : preco, "codigo" : codigo}
def muda(self, name, qtd, forn, preco):
self.s["nome"] = name
self.s["qnt"] = qtd
self.s["fornecedor"] = forn
self.s['preco'] = preco
- -----------------------------------------------------------------------------------------------------------------------
- CREATE
def clickcriar():
def clickadd():
nome = inname.get()
quantidade = inqnt.get()
preco = inpreco.get()
marca = inmarca.get()
codigo = incodigo.get()
arquivo = open("produtos.txt", "a")
lista = []
lista.append(nome + " ")
lista.append(quantidade +" ")
lista.append(preco + " ")
lista.append(marca + " ")
lista.append(codigo)
arquivo.writelines(lista)
arquivo.write("\n")
arquivo.close()
v.append(Produto(nome, quantidade, preco, marca, codigo))
tabela.insert("",'end',text= "L1",values=(nome, quantidade, preco, marca, codigo))
janelacriar.destroy()
return
janelacriar = Toplevel()
janelacriar.geometry("300x200")
janelacriar.title("Novo produto")
nome = Label(janelacriar, text = "Nome do produto:").place(x = 5, y = 5)
inname = Entry(janelacriar)
inname.place(x = 120, y = 5)
qnt = Label(janelacriar, text = "Quantidade:").place(x = 5, y = 30)
inqnt = Spinbox(janelacriar, from_ = 0, to = 1000)
inqnt.place(x = 120, y = 30)
preco = Label(janelacriar, text = "Preço: R$").place(x = 5, y = 55)
inpreco = Entry(janelacriar)
inpreco.place(x = 120, y = 55)
marca = Label(janelacriar, text = "Marca/Fornecedor:").place(x = 5, y = 80)
inmarca = Entry(janelacriar)
inmarca.place(x = 120, y = 80)
codigo = Label(janelacriar, text = "Codigo do produto:").place(x = 5, y = 105) incodigo = Entry(janelacriar) incodigo.place(x = 120, y = 105)
btnadd = Button(janelacriar, text = "Confirmar", command = clickadd).place(x = 200, y = 160) janelacriar.mainloop()
- -----------------------------------------------------------------------------------------------------------------------
- RECOVER
def clickpesquisa():
if metodo.get() == "Nome":
m = 0
else:
m = 4
pesquisar = pesquisa.get()
arquivo = open("produtos.txt", "r")
produtos = arquivo.readlines()
for i in produtos:
lista = i.split()
if lista[m] == pesquisar:
status["text"] = pesquisar + " encontrado"
status.place(x = 5, y = 30)
status["fg"] = "blue"
flag = True
break
else:
flag = False
status["text"] = pesquisar + " não encontrado"
status.place(x = 5, y = 30)
status["fg"] = "red"
if flag == True:
tabelaprodutos = tabela.get_children()
for i in tabelaprodutos:
x = tabela.item(i, "value")
if pesquisar == x[m]:
tabela.selection_set(i)
break
- -----------------------------------------------------------------------------------------------------------------------
- UPDATE
def clickeditar(ANCHOR):
def clickadd():
nome = inname.get()
quantidade = inqnt.get()
preco = inpreco.get()
marca = inmarca.get()
codigo = incodigo.get()
arquivo = open("produtos.txt", "r")
produtos = arquivo.readlines()
arquivo.close()
arquivo = open("produtos.txt", "w")
for i in produtos:
lista = i.split()
if lista[0] == pesquisa:
arquivo.writelines(nome + " " + quantidade + " " + preco + " " + marca+ " " + codigo+ "\n")
else:
arquivo.writelines(i)
x = tabela.selection()[0]
tabela.delete(x)
tabela.insert("",'end',text= "L1",values=(nome, quantidade, preco, marca, codigo))
janelaeditar.destroy()
janelaeditar = Toplevel()
janelaeditar.geometry("300x200")
janelaeditar.title("Editar")
nome = Label(janelaeditar, text = "Nome do produto:").place(x = 5, y = 5)
inname = Entry(janelaeditar)
inname.place(x = 120, y = 5)
qnt = Label(janelaeditar, text = "Quantidade:").place(x = 5, y = 30)
inqnt = Spinbox(janelaeditar, from_ = 0, to = 1000)
inqnt.place(x = 120, y = 30)
preco = Label(janelaeditar, text = "Preço: R$").place(x = 5, y = 55)
inpreco = Entry(janelaeditar)
inpreco.place(x = 120, y = 55)
marca = Label(janelaeditar, text = "Marca/Fornecedor:").place(x = 5, y = 80)
inmarca = Entry(janelaeditar)
inmarca.place(x = 120, y = 80)
codigo = Label(janelaeditar, text = "Codigo do produto:").place(x = 5, y = 105)
incodigo = Entry(janelaeditar)
incodigo.place(x = 120, y = 105)
x = tabela.selection()[0]
y = tabela.item(x, "values")
pesquisa = y[0]
for i in v:
if i.s["nome"] == pesquisa:
inname.insert(END, i.s["nome"])
inqnt.insert(0, i.s["qnt"])
inpreco.insert(END, i.s["preco"])
inmarca.insert(END, i.s["marca"])
incodigo.insert(END, i.s["codigo"])
btnadd = Button(janelaeditar, text = "Confirmar", command = clickadd).place(x = 200, y = 160)
janelaeditar.mainloop()
- -----------------------------------------------------------------------------------------------------------------------
- DELETE
def delete():
x = tabela.selection()[0]
y = tabela.item(x, "values")
pesquisa = y[0]
arquivo = open("produtos.txt", "r")
produtos = arquivo.readlines()
arquivo.close()
arquivo = open("produtos.txt", "w")
for i in produtos:
lista = i.split()
if lista[0] != pesquisa:
arquivo.writelines(i)
arquivo.close()
x = tabela.selection()[0]
tabela.delete(x)
#-----------------------------------------------------------------------------------------------------------------------
btntabela = Button(janela, text = "Delete", command = delete) btntabela.place(x = 525, y = 5)
tabela = ttk.Treeview(janela, selectmode = 'browse', show = 'headings') tabela.place(x= 5, y = 50) tabela["columns"] = ("1", "2", "3", "4", "5") tabela['show'] = 'headings' tabela.column("1", width=118, anchor='c') tabela.column("2", width=118, anchor='c') tabela.column("3", width=118, anchor='c') tabela.column("4", width=118, anchor='c') tabela.column("5", width=116, anchor='c') tabela.heading("1", text="Nome") tabela.heading("2", text="Quantidade") tabela.heading("3", text="Preço") tabela.heading("4", text="Marca") tabela.heading("5", text="Codigo")
- CREATE
btncriar = Button(janela, text = "Adicionar novo produto", command = clickcriar).place(x = 355, y = 5)
- RECOVER
pesquisa = Entry(janela, width = 13) pesquisa.place(x = 5, y = 10) btpesquisa = Button(janela, width = 10, height = 1, text = "pesquise", command = clickpesquisa) btpesquisa.place(x = 220, y =5) status = Label(janela) metodo = StringVar(janela) metodo.set("Nome") metodopesquisa = OptionMenu(janela, metodo, "Nome", "Codigo").place(x = 130, y = 5)
- UPDATE
btneditar = Button(janela, text = "Editar", command = lambda tabela = tabela: clickeditar(ANCHOR)).place(x = 5, y = 300)
janela.mainloop() </syntaxhighlight>
15/06/2017
<syntaxhighlight lang="python3" line="1"> from tkinter import * from functools import partial
janela = Tk() janela.geometry("600x600") v = []
tabela = Listbox(janela, selectmode = EXTENDED, width = 73) tabela.insert(END, "asdasd") tabela.delete(END, END) def clickcarrinho(botao):
print(botao["text"])
class Produto(object):
def __init__(self, name, qtd, preco, marca, codigo):
self.s = {"nome" : name, "qnt" : qtd, "marca" : marca, "preco" : preco, "codigo" : codigo}
def muda(self, name, qtd, forn, preco):
self.s["nome"] = name
self.s["qnt"] = qtd
self.s["fornecedor"] = forn
self.s['preco'] = preco
- -----------------------------------------------------------------------------------------------------------------------
- CREATE
def clickcriar():
def clickadd():
nome = inname.get()
quantidade = inqnt.get()
preco = inpreco.get()
marca = inmarca.get()
codigo = incodigo.get()
tabela.insert(END, nome)
arquivo = open("produtos.txt", "a")
lista = []
lista.append(nome + " ")
lista.append(quantidade +" ")
lista.append(preco + " ")
lista.append(marca + " ")
lista.append(codigo)
arquivo.writelines(lista)
arquivo.write("\n")
arquivo.close()
v.append(Produto(nome, quantidade, preco, marca, codigo))
janelacriar.destroy()
return
janelacriar = Toplevel()
janelacriar.geometry("300x200")
janelacriar.title("Novo produto")
nome = Label(janelacriar, text = "Nome do produto:").place(x = 5, y = 5)
inname = Entry(janelacriar)
inname.place(x = 120, y = 5)
qnt = Label(janelacriar, text = "Quantidade:").place(x = 5, y = 30)
inqnt = Spinbox(janelacriar, from_ = 0, to = 1000)
inqnt.place(x = 120, y = 30)
preco = Label(janelacriar, text = "Preço: R$").place(x = 5, y = 55)
inpreco = Entry(janelacriar)
inpreco.place(x = 120, y = 55)
marca = Label(janelacriar, text = "Marca/Fornecedor:").place(x = 5, y = 80)
inmarca = Entry(janelacriar)
inmarca.place(x = 120, y = 80)
codigo = Label(janelacriar, text = "Codigo do produto:").place(x = 5, y = 105) incodigo = Entry(janelacriar) incodigo.place(x = 120, y = 105)
btnadd = Button(janelacriar, text = "Confirmar", command = clickadd).place(x = 200, y = 160) janelacriar.mainloop()
- -----------------------------------------------------------------------------------------------------------------------
- RECOVER
def clickpesquisa():
if metodo.get() == "Nome":
m = 0
else:
m = 4
pesquisar = pesquisa.get()
arquivo = open("produtos.txt", "r")
produtos = arquivo.readlines()
print(type(produtos))
for i in produtos:
lista = i.split()
if lista[m] == pesquisar:
status["text"] = pesquisar + " encontrado"
status.place(x = 5, y = 30)
status["fg"] = "blue"
print("encontrado")
break
print(lista)
else:
status["text"] = pesquisar + " não encontrado"
status.place(x = 5, y = 30)
status["fg"] = "red"
- -----------------------------------------------------------------------------------------------------------------------
- UPDATE
def clickeditar(ANCHOR):
def clickadd():
nome = inname.get()
quantidade = inqnt.get()
preco = inpreco.get()
marca = inmarca.get()
codigo = incodigo.get()
arquivo = open("produtos.txt", "r")
produtos = arquivo.readlines()
arquivo.close()
arquivo = open("produtos.txt", "w")
for i in produtos:
lista = i.split()
if lista[0] == pesquisa:
arquivo.writelines(nome + " " + quantidade + " " + preco + " " + marca+ " " + codigo+ "\n")
else:
arquivo.writelines(i)
janelaeditar.destroy()
janelaeditar = Toplevel()
janelaeditar.geometry("300x200")
janelaeditar.title("Editar")
nome = Label(janelaeditar, text = "Nome do produto:").place(x = 5, y = 5)
inname = Entry(janelaeditar)
inname.place(x = 120, y = 5)
qnt = Label(janelaeditar, text = "Quantidade:").place(x = 5, y = 30)
inqnt = Spinbox(janelaeditar, from_ = 0, to = 1000)
inqnt.place(x = 120, y = 30)
preco = Label(janelaeditar, text = "Preço: R$").place(x = 5, y = 55)
inpreco = Entry(janelaeditar)
inpreco.place(x = 120, y = 55)
marca = Label(janelaeditar, text = "Marca/Fornecedor:").place(x = 5, y = 80)
inmarca = Entry(janelaeditar)
inmarca.place(x = 120, y = 80)
codigo = Label(janelaeditar, text = "Codigo do produto:").place(x = 5, y = 105)
incodigo = Entry(janelaeditar)
incodigo.place(x = 120, y = 105)
pesquisa = tabela.get(ANCHOR)
for i in v:
if i.s["nome"] == pesquisa:
inname.insert(END, i.s["nome"])
inqnt.insert(0, i.s["qnt"])
inpreco.insert(END, i.s["preco"])
inmarca.insert(END, i.s["marca"])
incodigo.insert(END, i.s["codigo"])
btnadd = Button(janelaeditar, text = "Confirmar", command = clickadd).place(x = 200, y = 160)
janelaeditar.mainloop()
- -----------------------------------------------------------------------------------------------------------------------
tabela = Listbox(janela, selectmode = EXTENDED, width = 73) tabela.place(x = 5, y = 50) btntabela = Button(janela, text = "Delete", command = lambda tabela = tabela: tabela.delete(ANCHOR)) btntabela.place(x = 525, y = 5)
- CREATE
btncriar = Button(janela, text = "Adicionar novo produto", command = clickcriar).place(x = 355, y = 5)
carrinho = Button(janela, width =20, text = "Meu carrinho") carrinho.place(x = 200, y = 210) carrinho["command"] =partial(clickcarrinho, carrinho)
- RECOVER
pesquisa = Entry(janela, width = 13) pesquisa.place(x = 5, y = 10) btpesquisa = Button(janela, width = 10, height = 1, text = "pesquise", command = clickpesquisa) btpesquisa.place(x = 220, y =5) status = Label(janela) metodo = StringVar(janela) metodo.set("Nome") metodopesquisa = OptionMenu(janela, metodo, "Nome", "Codigo").place(x = 130, y = 5)
- UPDATE
btneditar = Button(janela, text = "Editar", command = lambda tabela = tabela: clickeditar(ANCHOR)).place(x = 5, y = 300)
janela.mainloop() </syntaxhighlight>
