Jump to content

Usar o método .get() em uma variável de uma nova janela tkinter


Mach_D

Postagens Recomendadas

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

Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...