Program (and all widgets) exists as long as mainloop is working - not only in tkinter but also in wxpython, pygame, etc. When mainloop is finishing work it destroys all widgets and window. You have to save config before mainloop.
You can add button quit
with assinged function which save config and than close program.
(not tested code)
def saveConfig():
global config
config.set('Default', 'Param1', e1.get())
config.set('Default', 'Blah7', e2.get())
config.set('Default', 'Param3', e3.get())
config.write(open('config.ini','w'))
root.quit()
Button(root, "QUIT", command=saveConfig)
Maybe you could also assing this function to closing event
to save config when user use close button [X].
root.protocol("WM_DELETE_WINDOW", saveConfig)
Code reading config and code writing config are not identical. There is no shorter way.
You can only use lists and for
loop to make load/save "nicer" :)
entries = []
options = []
entries.append(Entry(f1)); entries[-1].grid(row=1,column=1,sticky=W)
options.append("Param1")
entries.append(Entry(f1)); entries[-1].grid(row=2,column=1,sticky=W)
options.append("Blah7")
entries.append(Entry(f1)); entries[-1].grid(row=3,column=1,sticky=W)
options.append("Param3")
# load
import ConfigParser
config = ConfigParser.ConfigParser()
config.read('config.ini')
for index, e in enumerate(entries):
e.insert(0, config.get("Default", options[index]) )
# save
for index, e in enumerate(entries):
config.set("Default", options[index], e.get())
config.write(open('config.ini','w'))