我有一個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