我想用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