我有一个tkinter接口,我需要显示一些查询结果,我需要用户能够修改列并提交结果。目前,拉我做这样的事情的疑问:SQL查询结果tkinter
conn = connection_info_goes_here
cur = conn.cursor()
cur.execute(query_goes_here)
这是我的查询:
SELECT id, reviewer, task, num_seconds, start_time, end_time
FROM hours
WHERE DATE(start_time) = '2014-12-18'
AND reviewer = 'john'
用户需要修改的字段是num_seconds
(只是数字)。我的问题是,如何使查询结果显示在网格中,以及如何使用按钮修改某个字段以提交更改?
附加信息:我已经以非常混乱的方式使用exec()
并以编程方式为每个字段创建变量。它变得非常漫长和令人困惑,我真的认为必须有更好更简单的方法来做到这一点。
任何帮助表示赞赏。谢谢!!
快速更新:,因为这被搁置,我会的类似图像添加到我正在寻找:
在输入标签的值必须更换当我将它们上传到数据库时,该列中的值位于右侧。
当我说我在一个混乱的方式做到这一点,是因为我做了(我能想到的唯一途径):
def cor_window():
corrections = Tk()
corrections.title("Corrections")
corrections_frame = ttk.Frame(corrections)
cor_values = []
count=0
cor_count=0
for x in results:
count2=0
for y in results[count]:
if count2 == 3:
exec('int' + str(cor_count) + '=tkinter.StringVar')
exec('int' + str(cor_count) + '_entry = ttk.Entry(corrections, width=20, textvariable=int' + str(cor_count) + ')')
exec('int' + str(cor_count) + '_entry.grid(column=count2, row=count+2)')
cor_count = cor_count+1
cor_values.append('int' + str(cor_count) + '_entry')
ttk.Label(corrections, width=20, anchor=CENTER, relief=SUNKEN, borderwidth=1, text= results[count][count2]).grid(column=count2+1, row=count+2)
elif count2 > 3:
ttk.Label(corrections, width=20, anchor=CENTER, relief=SUNKEN, borderwidth=1, text= results[count][count2]).grid(column=count2+1, row=count+2)
else:
ttk.Label(corrections, width=20, anchor=CENTER, relief=SUNKEN, borderwidth=1, text= results[count][count2]).grid(column=count2, row=count+2)
count2=count2+1
count=count+1
ttk.Button(corrections, text="Done!", command=upload_cor).grid(column=0, row=1)
哪里results
是包含查询结果和upload_cor
是列表函数会将更改上传到数据库。由于我使用exec
,即使用户修改输入框,我也无法使用.get()
来获取用户输入的内容。当我尝试使用.get()
时,即使输入框中输入了某些内容,我也只能得到None
。
我只是需要一个不同的方法来做到这一点,再次,任何想法都是值得欢迎的。
num_seconds将使用一个条目(或一个条目ID列表),其余的将是标签。您还必须将行号链接到记录,并将每个条目与原始值进行比较以查看哪些行已更改,但是如果“id”是唯一的,那么它应该很简单。输入部件信息http://effbot.org/tkinterbook/entry.htm – 2014-12-19 01:31:53