简体   繁体   中英

Using sqlite3 and tkinter i have made this small inventory management system, the problem is the entry to the database is always null

The code does not add new elements instead adds blank values to the database. Confused!

def ProEntry():
        def makeEntry(name,date,dept,amt,amt2,lab,thr):
            conn = sqlite3.connect("database.db")
            cur = conn.cursor()
            cur.execute("INSERT INTO products VALUES(?,?,?,?,?,?,?)",(name.get(), date.get(), dept.get(), amt.get(), amt2.get(), lab.get(), thr.get()))
            conn.commit()
            conn.close()

From here I begin adding values to the gui using entry widget

    entrywindow = Tk()
    entrywindow.title("New Product Entry")
    namedisp = Label(entrywindow, text="Name Of Product").grid(row=0, column=0)
    name = StringVar()
    nameentry = Entry(entrywindow, textvariable=name).grid(row=0, column=1)

To check individual variables I printed name using name.get() but that also outputs null value.

    print(name.get())

    datedisp = Label(entrywindow, text="Date of Purchase (YYYY-MM-DD)").grid(row=1, column=0)
    date = StringVar()
    dateentry = Entry(entrywindow, textvariable=date).grid(row=1, column=1)

    deptdisp = Label(entrywindow, text="Name Of Department(s) seperate with ','").grid(row=2, column=0)
    dept = StringVar()
    deptentry = Entry(entrywindow, textvariable=dept).grid(row=2, column=1)

    amtdisp = Label(entrywindow, text="Amount Purchased").grid(row=3, column=0)
    amt = StringVar()
    amtentry = Entry(entrywindow, textvariable=amt).grid(row=3, column=1)

    amt2disp = Label(entrywindow, text="Amount Installed").grid(row=4, column=0)
    amt2 = StringVar()
    amt2entry = Entry(entrywindow, textvariable=amt2).grid(row=4, column=1)

    labdisp = Label(entrywindow, text="Room number Of Lab(s) seperate with ','").grid(row=5, column=0)
    lab = StringVar()
    labentry = Entry(entrywindow, textvariable=lab).grid(row=5, column=1)

    thrdisp = Label(entrywindow, text="Threshold").grid(row=6, column=0)
    thr = StringVar()
    threntry = Entry(entrywindow, textvariable=thr).grid(row=6, column=1)

    confirm = Button(entrywindow, text="Confirm", command = makeEntry(name,date,dept,amt,amt2,lab,thr)).grid(row=7, column=0)
    exi = Button(entrywindow, text="Exit", command = entrywindow.destroy).grid(row=7, column=1)

    entryWindow.mainloop()

I think that i faced this problem, when you type this line of code for example:

labentry = Entry(entrywindow, textvariable=lab).grid(row=5, column=1)

The labentry value will be returned as None so try:

labentry = Entry(entrywindow, textvariable=lab);labentry.grid(row=5, column=1)

Hope i helped you

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM