tkinter - Make input table with initial entries and save changes with tikinter in python -
i trying make input table in python using tkinter. input table has initial values can changed. when alle inputs have been edited, want save changes. use tinydb database store input values.
can show easy example on how that?
i see got lot of critical responses not showing initial code. think found solution when typing simple example, seems work ok. have make object oriented, though.
from tkinter import * tinydb import tinydb, query # name on database stored parameter values (confined , free parameters) param_db_name = 'db5.json' db2 = tinydb(param_db_name) # field name , values 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 = {} 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 = {} = 0 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() the db2 database consists of 2 entries:
[{'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}}]
Comments
Post a Comment