from tkinter import *
"""
- Primeiro criar uma lista do que temos na dispensa, LISTA DISPENSA;
- Criar uma lista com a parir de uma lista de estoque LISTA ESTOQUE;
- Criar uma lista de compras a partir da lista do estoque e da lista dispensa LISTA DE COMPRAS;
"""
class Dispensa(object):
def __init__(self):
self.listaDispensa = []
def recebeDispensa(self):
produto = []
ad = []
quant = int(vqtd.get()) # int(input("Quantidade: "))
produto.append(quant)
un = vun.get().upper() #input("Unidade: ").upper()
produto.append(un)
prod = vprod.get().upper() #input("Produto: ").upper()
produto.append(prod)
ad = produto.copy()
self.listaDispensa.append(ad)
produto.clear()
class Estoque(object):
def __init__(self):
self.lista = []
def estoque(self):
with open("listaBase.txt", "r") as arquivo:
self.lista = arquivo.readlines()
for i in range(len(self.lista)):
self.lista[i] = self.lista[i].upper().split()
arquivo.close()
for i in range(2,len(self.lista)):
self.lista[i][0] = int(self.lista[i][0])
for i in range(2, len(self.lista)):
for j in range(3, len(self.lista[i])):
self.lista[i][2] += " " + self.lista[i][j]
for i in range(2, len(self.lista)):
del self.lista[i][3:(len(self.lista)+1)]
d = Dispensa()
e = Estoque()
class Lista(object):
def __init__(self):
self.listaDeCompras = []
def calculaLista(self, lista, listaDispensa):
a = []
for i in range(2,len(lista)):
for j in range(len(listaDispensa)):
if lista[i][2] == listaDispensa[j][2]:
qtd = lista[i][0] - listaDispensa[j][0]
a.append(qtd)
a.append(listaDispensa[j][1])
a.append(listaDispensa[j][2])
d = a.copy()
self.listaDeCompras.append(d)
a.clear()
print(self.listaDeCompras)
l = Lista()
def executa_func():
l.calculaLista(e.lista, d.listaDispensa)
vprod.delete(0, END)
vun.delete(0, END)
vqtd.delete(0,END)
vprod.focus_force()
def executa_func2():
d.recebeDispensa()
vprod.delete(0, END)
vun.delete(0, END)
vqtd.delete(0,END)
vprod.focus_force()
def ins_lista_base():
with open("listaBase.txt", "a") as arquivo:
arquivo.write("\n" + vqtdC.get() + "...." + vun.get().upper() + "...." + vprod.get().upper())
arquivo.close()
def nova_janela():
newWindow = Tk()
newWindow.title("Cadastro de Produtos")
newWindow.geometry("300x200")
Label(newWindow,text =vprod.get().upper() + "\n não está cadastrado.\n Para cadastra-lo indique a quantidade\n mínima que deve ter em seu estoque.").place(x = 10, y = 10, width = 280, height = 80)
Label(newWindow, text="Quantidade em Estoque",background="#DCDCDC", foreground = "#000", anchor = W).place(x=10, y = 95, width =180, height = 20)
vqtdC = Entry(newWindow)
vqtdC.place(x = 10, y = 115, width = 80, height = 20)
botao = Button(newWindow, text = "Cadastrar", command=ins_lista_base)
botao.place(x = 10, y=140, width = 80, height=25)
newWindow.mainloop()
janela = Tk()
janela.title("Lista de Compras v 1.1")
janela.geometry("600x400")
janela.configure(background="#27d")
Label(janela, text="Produto",background="#27d", foreground = "#000", anchor = W).place(x=10, y = 40, width = 80, height = 20)
vprod = Entry(janela)
vprod.place(x = 10, y = 60, width = 300, height = 20)
vprod.focus_force()
Label(janela, text="Unidade",background="#27d", foreground = "#000", anchor = W).place(x=10, y = 80, width = 80, height = 20)
vun = Entry(janela)
vun.place(x = 10, y = 100, width = 30, height = 20)
Label(janela, text="Quantidade em Estoque",background="#27d", foreground = "#000", anchor = W).place(x=10, y = 122, width =180, height = 20)
vqtd = Entry(janela)
vqtd.place(x = 10, y = 140, width = 80, height = 20)
Button(janela, text = "Cadastrar", command = nova_janela).place(x = 10, y=165, width = 80, height = 25)
Button(janela, text = "Estoque", command = e.estoque).place(x = 10, y = 10, width = 80, height = 25)
Button(janela, text = "Imprimir Lista", command = executa_func).place(x = 95, y = 10, width = 110, height = 25)
janela.mainloop()
Olá colegas!!
Estou com um problema. Sou iniciante e estudando para uma avaliação com interfaces gráficas tentei criar uma aplicação simples para poder trabalhar com as janelas do Tkinter. A aplicação tem um arquivo de texto contendo uma lista com o que se deve conter no estoque de uma dispensa, e então uma janela com alguns Entrys é disponibilizado para que digitemos alguns dados do que temos em estoque. a primeira ideia é que quando clicássemos em cadastrar fizéssemos uma verificação se o item consta na lista do estoque, e.estoque. Para testar eu criei uma função nova_janela() para abrir uma nova janela como se fosse cadastrar o novo item. Nessa nova janela eu só devo colocar a quantidade do item que devemos ter em estoque, na variável "vqtdC" para que execute uma função que escreve no arquivo de texto (com a lista de estoque) adicionando o texto de vqtdC usando o metodo .get(). Este é o problema, quando executo a função ins_lista_base() aparece uma mensagem de erro informando que vqtdC não foi definida.
Abaixo eu disponibilizo a informação de erro. Espero que possam me ajudar.
File "main.py", line 102, in ins_lista_base
arquivo.write("\n" + vqtdC.get() + "...." + vun.get().upper() + "...." + vprod.get().upper())
NameError: name 'vqtdC' is not defined