Jul-02-2020, 07:35 PM
I'm new on Python and now I'm trying to do a simple product registration system with tkinter and sqlite3, following a tutorial on the internet. But I'm having some problems and I don't know what to do.
My code:
My code:
from tkinter import * import sqlite3 import tkinter.messagebox conn = sqlite3.connect("C:\TkinterVenda\Database\store.db") c = conn.cursor() result = c.execute("SELECT MAX(id) from inventory") for r in result: ID = r[0] class Database: def __init__(self, master, *args, **kwargs): self.master = master self.heading = Label(master, text="Cadastro De Produtos", font = ('arial 40 bold'), fg = 'steelblue') self.heading.place(x=400,y=0) self.Name_1 = Label(master, text = "Nome do produto:", font= ('arial 18 bold')) self.Name_1.place(x=0, y=70) self.Stock_1 = Label (master, text="Estoque:", font=('arial 18 bold')) self.Stock_1.place (x=0, y=120) self.CP_1 = Label (master, text="Preço Custo:", font=('arial 18 bold')) self.CP_1.place (x=0, y=170) self.SP_1 = Label (master, text="Preço Venda:", font=('arial 18 bold')) self.SP_1.place (x=0, y=220) self.Vendor_1 = Label (master, text="Nome do Fornecedor:", font=('arial 18 bold')) self.Vendor_1.place (x=0, y=270) self.Vendor_PhoneNumber_1 = Label (master, text="Telefone do Fornecedor", font=('arial 18 bold')) self.Vendor_PhoneNumber_1.place (x=0, y=320) self.ID_1 = Label (master, text="ID:", font=('arial 18 bold')) self.ID_1.place (x=0, y=370) self.Name_e = Entry(master, width = 25, font=('arial 18 bold')) self.Name_e.place (x=300, y=70) self.Stock_e = Entry (master, width=25, font=('arial 18 bold')) self.Stock_e.place (x=300, y=120) self.CP_e = Entry (master, width=25, font=('arial 18 bold')) self.CP_e.place (x=300, y=170) self.SP_e = Entry (master, width=25, font=('arial 18 bold')) self.SP_e.place (x=300, y=220) self.Vendor_e = Entry (master, width=25, font=('arial 18 bold')) self.Vendor_e.place (x=300, y=270) self.Vendor_PhoneNumber_e = Entry (master, width=25, font=('arial 18 bold')) self.Vendor_PhoneNumber_e.place (x=300, y=320) self.ID_e = Entry (master, width=25, font=('arial 18 bold')) self.ID_e.place (x=300, y=370) self.btn_add = Button(master, text = "Cadastrar", width=25, height = 2, bg='steelblue',fg = 'black', command = self.get_items) self.btn_add.place (x=520, y=420) self.btn_clear = Button (master, text="Limpar", width=18, height=2, bg='red', fg='black', command = self.clear_all) self.btn_clear.place (x=350, y=420) self.textBox = Text (master, width=60, height = 18) self.textBox.place (x=750, y=70) self.textBox.insert(END, "Ultimo ID Cadastrado: " + str(ID)) self.master.bind('<Return>',self.get_items) self.master.bind('<Up>', self.clear_all) def get_items(self, *args, **kwargs): self.Name = self.Name_e.get() self.Stock = self.Stock_e.get() self.CP = self.CP_e.get() self.SP = self.SP_e.get() self.Vendor = self.Vendor_e.get() self.Vendor_PhoneNumber = self.Vendor_PhoneNumber_e.get() self.TotalCP = float(self.CP) * float(self.Stock) self.TotalSP = float(self.SP) * float(self.Stock) self.Assumed_profit = float(self.TotalSP - self.TotalCP) if self.Name =='' or self.Stock == '' or self.CP == '' or self.SP =='': tkinter.messagebox.showinfo("Provedor", "FAVOR PREENCHER TODOS OS CAMPOS!") else: sql = "INSERT INTO inventory (Name, Stock, CP, SP, Vendor, Vendor_PhoneNumber, TotalCP, TotalSP, Assumed_profit) VALUES(?,?,?,?,?,?,?,?,?)" c.execute(sql,(self.Name, self.Stock, self.CP, self.SP, self.Vendor, self.Vendor_PhoneNumber, self.TotalCP, self.TotalSP, self.Assumed_profit)) conn.commit() self.textBox.insert(END, "\n\nCadastro" + str(self.Name) + "no banco de dados com o ID:" + str(ID)) tkinter.messagebox.showinfo ("Provedor", "CADASTRO FEITO COM SUCESSO!") def clear_all(self, *args, **kwargs): num = ID + 1 self.Name_e.delete(0,END) self.Stock_e.delete(0,END) self.CP_e.delete(0,END) self.SP_e.delete(0,END) self.Vendor_e.delete(0,END) self.Vendor_PhoneNumber_e.delete(0,END) root = Tk() b = Database(root) root.geometry("1366x768+0+0") root.title("FORMULARIO DE CADASTRO") root.mainloop()Error:
Error: Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Cliente\AppData\Local\Programs\Python\Python38-32\lib\tkinter\__init__.py", line 1883, in __call__
return self.func(*args)
File "C:/TkinterVenda/Database/add_to_db.py", line 85, in get_items
self.TotalCP = float(self.CP) * float(self.Stock)
ValueError: could not convert string to float: ''