如何将树视图中的数据插入数据库(Python,Tkinter,Sqlite3)

时间:2019-07-16 05:23:36

标签: python database treeview

我有一个代码,应该是某种形式的账单,它将代码插入树状视图中,以便可以看到我购买的所有产品,但是我不知道如何将树形视图与其余数据。

我正在使用Tkinter和Sqlite3,我已经能够将所有其他条目添加到数据库中,只是我是新来的使用树视图的人,而我却找不到能够真正起到帮助作用的……

from tkinter import *
[enter image description here][1]import time
from tkinter import messagebox
import tkinter.ttk as ttk
from sqlite3 import connect


root=Tk()
root.geometry("650x620")
root.title("Factura")
root.config(bg="light blue")


#-----------------------StringVars------

S=StringVar()
Imp=StringVar()
Total=StringVar()
x2=StringVar()
fac=StringVar()

#------------------Lo Que Ya Viene-----------------

a=Label(root, text="Clínica Odontológica Sonrisas",font=("Time",15))
a.place(x=50, y=2)
a.config(width=50)
a.config(bg="light blue")

a1=Label(root, text="Frente a la gasolinera UNO, Boulevard Cuarto Centenario",font=("Time",11))
a1.place(x=175, y=35)
a1.config(bg="light blue")

a2=Entry(root, textvariable=fac,font=("Time",9))
a2.place(x=500, y=65)


a3=Label(root, text="RTN Emp:08011982312150",font=("Time",9))
a3.place(x=500, y=90)
a3.config(bg="light blue")


a4=Label(root, text="Tel Emp:27726842",font=("Time",9))
a4.place(x=509, y=115)
a4.config(bg="light blue")



#----------------- Introduzca / Cliente -------------------

fecha6=StringVar()

a6=Label(root, text="Fecha",font=("Time",8))
a6.place(x=20, y=68)
a6.config(width=15)

fecha6.set(time.strftime("%d/%m/%y %I:%M%p"))
Fechafecha=Entry(root,textvariable=fecha6)
Fechafecha.config(width=16)
Fechafecha.place(x=130,y=70)

a7=Label(root, text="Cliente",font=("Time",8))
a7.place(x=250, y=68)
a7.config(width=15)

aa7=Entry(root)
aa7.place(x=355, y=69)
aa7.config(width=16)

a8=Label(root, text="RTN Cliente",font=("Time",8))
a8.place(x=20, y=99)
a8.config(width=15)

aa8=Entry(root)
aa8.place(x=130, y=101)
aa8.config(width=16)

a9=Label(root, text="Telefono Cliente",font=("Time",8))
a9.place(x=250, y=99)
a9.config(width=15)
aa9=Entry(root)
aa9.place(x=355, y=101)
aa9.config(width=16)

a10=Label(root, text="Direccion Cliente",font=("Time",8))
a10.place(x=20, y=128)
a10.config(width=15)
aa10=Entry(root)
aa10.place(x=130, y=130)
aa10.config(width=26)

#----------------- Introduzca / Producto -----------------

dc=Label(root, text="__________________Datos Compra__________________  ",font=("Time",8))
dc.place(x=170, y=155)
dc.config(bg="light blue")

a11=Label(root, text="Codigo Producto",font=("Time",8))
a11.place(x=20, y=185)
a11.config(width=15)
aa11=Entry(root)
aa11.place(x=130, y=187)
aa11.config(width=16)

a12=Label(root, text="Descripcion",font=("Time",8))
a12.place(x=250, y=185)
a12.config(width=15)
aa12=Entry(root)
aa12.place(x=357, y=186)
aa12.config(width=30)

a13=Label(root, text="Cantidad",font=("Time",8))
a13.place(x=20, y=215)
a13.config(width=15)
aa13=Entry(root)
aa13.place(x=130, y=216)
aa13.config(width=12)

a14=Label(root, text="Precio",font=("Time",8))
a14.place(x=230, y=215)
a14.config(width=15)
aa14=Entry(root)
aa14.place(x=337, y=216)
aa14.config(width=13)


a16=Label(root, text="Sub Total",font=("Time",9))
a16.place(x=150, y=265)
a16.config(width=15)

aa16=Entry(root,textvariable=S)
aa16.place(x=275, y=267)
aa16.config(width=16)

a17=Label(root, text="Impuesto: 15%",font=("Time",12))
a17.place(x=470, y=520)

a17=Label(root, text="Total",font=("Time",9))
a17.place(x=430, y=560)
a17.config(width=15)

aa17=Entry(root,textvariable=Total)
aa17.place(x=550, y=560)
aa17.config(width=12)

#-------------------Boton Salida----------------

def salir():
    root.destroy()

BotonSalida=Button(root,text="Salida",command=salir,font=("Time",13))
BotonSalida.place(x=170,y=551)
BotonSalida.config(width=10)

#-----Cuadro de los productos----

scrollbary=StringVar()

scrollbary= Scrollbar(root, orient=VERTICAL)
scrollbary.place(x=620,y=400)

productos= ttk.Treeview(root, columns=("Nombre", "Cantidad", "Precio","Total"), selectmode="extended", height=7,yscrollcommand=scrollbary.set)
scrollbary.config(command=productos.yview)
productos.heading('Nombre', text="Nombre",anchor=W)
productos.heading('Cantidad', text="Cantidad",anchor=W)
productos.heading('Precio', text="Precio",anchor=W)
productos.heading('Total', text="Total",anchor=W)
productos.column('#0', stretch=NO, minwidth=0, width=0)
productos.column('#1', stretch=NO, minwidth=0, width=200)
productos.column('#2', stretch=NO, minwidth=0, width=120)
productos.column('#3', stretch=NO, minwidth=0, width=120)
productos.column('#4', stretch=NO, minwidth=0, width=120)

productos.place(x=45,y=340)

#-----------------Hola1--------

def Ingresar(): 
    global detalles
    detalles.append((aa12.get(),aa13.get(),float(aa14.get())))
    productos.insert('', 'end', values=(aa12.get(),aa13.get(),int(aa14.get()),int(aa13.get())*float(aa14.get())))
    try:
        S.set(round((float(S.get())+(int(aa13.get())*float(aa14.get()))),2))
    except:
        S.set(round((int(aa13.get())*float(aa14.get())),2))
    Imp.set(round(float(S.get())*0.15,2))
    Total.set(round(float(aa16.get())+float(Imp.get())))
    aa12.set("")
    aa13.set("")
    aa14.set("")

#--------

def base_de_datos():
    global conexion, cursor, detalles
    detalles=[]

base_de_datos()

BotonSub=Button(root,text="Calcular",command=Ingresar,font=("Time",10))
BotonSub.place(x=425,y=265)
BotonSub.config(width=18)

#------------Guardar-----------
def Guardar():
        MiCon=connect("Facturas")
        MiCur=MiCon.cursor()
        MiCur.execute("INSERT INTO FACTURAS VALUES(NULL, '" + x2.get() +  
            "','" + aa7.get() + 
            "','" + aa8.get() + 
            "','" + aa10.get() +
            "','" + aa9.get() + 
            "','" + aa12.get() + 
            "','" + aa13.get() + 
            "','" + aa14.get() + 
            "','" + Fechafecha.get() + 
            "','" + aa16.get() +    
            "','" + Total.get() + "')")
        MiCon.commit()
        messagebox.showinfo("Guardar", "La factura fue guardada con éxito.")

BotonSub=Button(root,text="Guardar",command=Guardar,font=("Time",10))
BotonSub.place(x=30,y=555)
BotonSub.config(width=12)


mainloop()

由于那里没有数据库,您无法保存,但是我不知道我什至需要多少张表,因此如果你们中的任何一个能够帮助我,我将不胜感激< / p>

0 个答案:

没有答案