无法显示从 sqlite 到 tkinter 条目小部件的查询数据

Trouble showing queried data from sqlite to tkinter entry widget

所以我有这个问题。这个小项目背后的想法是,我想从 SQLite 数据库中添加几列,并根据用户在主 GUI 中单击的复选框(这些复选框是月份和年份),在输入框中显示这些结果,我可以让输入框显示一些东西,但这不是我想要的,相反,我在框中得到了这条消息:。我只想查看所选期间的总金额。

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''')

所以总的来说,我希望根据用户单击的年份和月份显示在空输入框中的 3 列中的总金额。

您的代码...

connect = c.execute("SELECT SUM(moneyback + woocomerce + deliveries) FROM income WHERE month = ? and year = ? ", (state7.get(), state6.get()))

...将执行搜索数据库以获取有利结果的操作,如果要将结果保存到变量中,则必须使用 fetchall()fetchone()fetchmany()方法。

所以像,

results = connect.fetchall() #to fetch all the data

results = connect.fetchone() #to fetch one of the data

请注意,result 将是已提取数据的元组列表。

现在你可以说

插入
incomeentry.insert(0, results[0]) #to insert the first item

Here is some documentation on sqlite and python

Some documentation on checkbuttons

如果有任何疑问或错误,请告诉我

干杯