无法显示从 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
如果有任何疑问或错误,请告诉我
干杯
所以我有这个问题。这个小项目背后的想法是,我想从 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
如果有任何疑问或错误,请告诉我
干杯