我想用tkinter在Python中創建輸入表。輸入表具有可以更改的初始值。當輸入已被編輯時,我想保存更改。我使用TinyDB作爲數據庫來存儲輸入值。使用tikinter在Python中創建輸入表並保存更改
有人可以展示一個簡單的例子,如何做到這一點?
我想用tkinter在Python中創建輸入表。輸入表具有可以更改的初始值。當輸入已被編輯時,我想保存更改。我使用TinyDB作爲數據庫來存儲輸入值。使用tikinter在Python中創建輸入表並保存更改
有人可以展示一個簡單的例子,如何做到這一點?
雖然我與布賴恩同意在這一個,存儲與tkinter
多個輸入的一個簡單的例子可以在下面找到:
from tkinter import *
root = Tk()
entry = []
def command(entry):
output = []
for i in range(len(entry)):
output.append(entry[i].get())
print(output)
for i in range(10):
entry.append(Entry(root))
entry[i].pack()
Button(root, text="Ok", command=lambda:command(entry)).pack()
root.mainloop()
這產生10個entry
元素,並使用由button
觸發的命令來存儲所有他們在list
。
謝謝。我在下面寫了一些代碼行,似乎工作。 – BettyBoop
我看到我得到了很多關鍵的反應,因爲沒有顯示我的初始代碼。我想我在輸入這個簡單的例子時找到了解決方案,它似乎工作正常。儘管如此,必須使其面向對象。
from tkinter import *
from tinydb import TinyDB, Query
# Name on database with stored parameter values (confined and free parameters)
param_db_name = 'db5.json'
db2 = TinyDB(param_db_name)
# Get field name and values for free parameters in Model1:
model_name = 'Model1'
felt = Query()
fields = (db2.search(felt.Model_name == model_name)[0]['free_par']).keys()
fields_val = (db2.search(felt.Model_name == model_name)[0]['free_par']).values()
#print('Fields_val: ',fields_val)
def save_params(entries, fields):
res_dict = {}
for field in fields:
res_dict[field] = float(entries[field].get())
print('Res dict:', res_dict)
felt = Query()
db2.update({'free_par': res_dict}, felt.Model_name == model_name)
def makeform(root, fields,ff):
entries = {}
i = 0
for field in fields:
row = Frame(root)
lab = Label(row, width=32, text=field+": ", anchor='w')
ent = Entry(row)
ent.insert(0, [ff[i]])
row.pack(side=TOP, fill=X, padx=5, pady=5)
lab.pack(side=LEFT)
ent.pack(side=RIGHT, expand=YES, fill=X)
entries[field] = ent
i=i+1
return entries
if __name__ == '__main__':
root = Tk()
root.wm_title("Model parameters")
ents = makeform(root, fields, list(fields_val))
b1 = Button(root, text='Lagre',command=lambda: save_params(ents,fields))
b1.pack(side=LEFT, padx=5, pady=5)
b2 = Button(root, text='Avslutt', command=root.quit)
b2.pack(side=RIGHT, padx=5, pady=5)
root.mainloop()
[{'Model_name': 'Model1','con_par': {'CPar1': 1, 'CPar2': 2, 'CPar3': 3.0},'free_par': {'FPar1': 0.589, 'FPar2': 1.44, 'FPar3': 3.0, 'FPar4': 2.427}},
{'Model_name': 'Model2','con_par': {'CPar1': 11, 'CPar2': 12, 'CPar3': 13.0},'free_par': {'FPar1': 10.589,'FPar2': 11.44,'FPar3': 13.0,'FPar4': 12.427}}]
這個網站是不是一個自由的編碼服務。我們希望你能做最初的工作。請做一些研究,也許通過教程進行研究,然後在遇到困難時提出問題。 –
好吧,我已經弄明白了,並在下面發佈我的示例。它似乎工作。 – BettyBoop