Hi guys i'm trying to make an app which takes data from some tkinter entry boxes adds them to a database and also displays them in a multi list box from tktreectrl. The code I have tried to use to add things to the database was based on various online tutorials however all this is doing is adding a 0 in the last column of the database. And even if I put values into the database using DB Browser they are still not displayed in the multi list box. (Here is the full code)
#Import Modules
import tkinter
import TkTreectrl
import sqlite3
#Database
db = sqlite3.connect("marks.db")
cursor=db.cursor()
print("Opened Database")
db.execute("CREATE TABLE IF NOT EXISTS marks (Firstname, Surname, Mark)")
print("Table created")
#Variables
Surname = str()
Firstname = str()
Mark = int()
#Define Buttons
def addentry() :
db.execute('INSERT INTO marks VALUES (?,?,?);', (Firstname,Surname,Mark))
db.commit()
print ("Entry Added To Database")
def deleteentry() :
selected=listbox.get(ACTIVE)
name=selected[0]
db.execute('DELETE FROM marks where Firstname =?', (name))
print ("Entry Deleted")
#Window
window = tkinter.Tk()
window.title("marks")
window.geometry("875x500")
#Labels
lbl_surname = tkinter.Label(window, text="Surname:", font="Arial 12 bold")
lbl_first = tkinter.Label(window, text="First-Name:", font="Arial 12 bold")
lbl_mark = tkinter.Label(window, text="Mark (Percentage):", font="Arial 12 bold")
#Entry
txt_surname = tkinter.Entry(window, textvariable=Surname)
txt_first = tkinter.Entry(window, textvariable=Firstname)
txt_mark = tkinter.Entry(window, textvariable=Mark)
#Button
but_save = tkinter.Button(window, text="Save", command= addentry, width=10)
but_delete = tkinter.Button(window, text="Delete", command=deleteentry, width=10)
#List
listbox = TkTreectrl.MultiListbox(window)
listbox.config(columns=('Firstname', 'Surname', ' Mark'))
cursor.execute('SELECT * from marks')
for row in cursor.fetchall():
listbox.insert('end',*map(unicode,row))
#Grid
lbl_surname.grid(row=0, column=1, padx=100)
lbl_first.grid(row=0, column=0)
lbl_mark.grid(row=0, column=2)
txt_surname.grid(row=1, column=1, padx=110)
txt_first.grid(row=1, column=0, padx=10)
txt_mark.grid(row=1, column=2)
but_save.grid(row=0, column=3)
but_delete.grid(row=1, column=3)
listbox.grid(row=2)
#Render
window.mainloop()
Any Ideas on what I've done wrong
Thanks Chris
Firstname,Surname, andMarkactually have values at the time you're doing the commit? Have you verified thatfetchall()is actually returning a non-empty result?