我正在编写一个简单的GUI程序,需要从ini文件中加载默认值。我已经为Entry小部件命名,可以使用nametowidget
方法获得它。
但是,我找不到一种方法来访问绑定到条目小部件的StringVar并更新其值。使用调试器,我可以看到StringVar对象没有tkinter母版,也没有出现在任何小部件子代中。那我想做的可能吗?还是有解决方法?
下面是有关功能。
def load_data(data_file):
"""
Read an ini file and update related values
:param data_file:
:return:
"""
conf = configparser.ConfigParser()
try:
conf.read(data_file)
for section in conf.sections():
try:
container = SECTIONS[section]
for key in conf[section]:
widget = container.nametowidget(key)
widget.set(conf[section][key])
except KeyError:
pass
except configparser.Error as e:
print(e)
答案 0 :(得分:1)
您可以通过StringVar
访问与小部件关联的widget["textvariable"]
。
import tkinter as tk
root = tk.Tk()
a = tk.StringVar()
a.set(0)
b = tk.Entry(root,textvariable=a)
b.pack()
print (b["textvariable"])
root.mainloop()
答案 1 :(得分:1)
Tkinter窗口小部件具有getvar
和setvar
方法,可用于通过其名称获取和设置变量的值。
您可以使用cget
方法获取与小部件关联的变量的名称。
示例:
var = tk.IntVar()
entry = tk.Entry(..., textvariable=var)
...
varname = entry.cget("textvariable")
value = entry.getvar(varname)
entry.setvar(varname, value+1)