So I have this problem. The idea behind this little project is that I want to add up few columns from the SQLite database and depending on which checkboxes the user click on (those checkboxes are months and years) in the main GUI, display those results in an entry box, I can get the entry box to display something, but it's not what I want, instead, I get this message in the box: <sqlite3.Cursor object at 0x03DFC160>. All I want is to see the sum amount of the selected period.
import sys
import sqlite3
from tkinter import *
from tkinter import ttk
# Creates an entry widget
incomeentry = Entry(root) #
incomeentry.place(relx=0.89, rely =0.01, relheight=0.035, relwidth=0.1, bordermode='ignore')
#Sets check boxes either to int or to str
state5 = IntVar()
state6 = IntVar()
state7 = StringVar()
state8 = StringVar()
# Creates 4 check buttons (2 for years and 2 for months)
TCheckbutton1 = Checkbutton(root, variable=state5,onvalue=2019, offvalue=0)
TCheckbutton1.place(relx=0.62, rely=0.01, relwidth=0.03
, relheight=0.0, height=21)
TCheckbutton1.configure(text='''2019''')
TCheckbutton2 = Checkbutton(root, variable=state6,onvalue=2020, offvalue=0)
TCheckbutton2.place(relx=0.62, rely=0.03, relwidth=0.03
, relheight=0.0, height=21)
TCheckbutton2.configure(text='''2020''')
TCheckbutton3 = Checkbutton(root, variable=state7,onvalue='January', offvalue=0)
TCheckbutton3.place(relx=0.62, rely=0.05, relwidth=0.03
, relheight=0.0, height=21)
TCheckbutton3.configure(text='''January''')
TCheckbutton4 = Checkbutton(root, variable=state8,onvalue='February', offvalue=0)
TCheckbutton4.place(relx=0.62, rely=0.07, relwidth=0.03
, relheight=0.0, height=21)
TCheckbutton4.configure(text='''February'')
#Tries to connect to the database, queries data from the SQLite and inserts it into Tkinter entry box
def Choose():
conn = sqlite3.connect("taxes.db")
c = conn.cursor()
connect = c.execute("SELECT SUM(moneyback + woocomerce + deliveries) FROM income WHERE month = ? and year = ? ", (state7.get(), state6.get()))
incomeentry.insert(0, connect)
conn.close()
# Creates a button that executes the 'Choose' function
TButton1 = Button(root, command=Choose)
TButton1.place(relx=0.54, rely=0.007, relwidth=0.075, relheight=0.00, height=50)
TButton1.configure(text='''Choose''')
So in general I want my summed amount from the 3 columns depending on the year and month that the user has clicked to appear in the empty entry box.
Your code ...
connect = c.execute("SELECT SUM(moneyback + woocomerce + deliveries) FROM income WHERE month = ? and year = ? ", (state7.get(), state6.get()))
...will do the operation for searching the database for the favorable results and if you want to hold the results into a variable, you have to use fetchall()
or fetchone()
or fetchmany()
method.
So something like,
results = connect.fetchall() #to fetch all the data
or
results = connect.fetchone() #to fetch one of the data
Note that result
will be a list of tuples of data fetched.
Now you can insert by saying
incomeentry.insert(0, results[0]) #to insert the first item
Here is some documentation on sqlite and python
Some documentation on checkbuttons
Do let me know if any doubts, or errors
Cheers