获取字符串var绑定到输入小部件



我正在编写一个简单的GUI程序,需要从INI文件加载默认值。我给了输入小部件的名称,可以使用nametowidget方法获得。

但是,我找不到一种访问绑定到条目小部件的StringVar并更新其值的方法。使用调试器,我可以看到StringVar对象没有TKINTER MASTER,并且它们不会出现在任何小部件的孩子中。那我想做的是可能的吗?还是有解决方法?

以下是相关功能。

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)

tkinter小部件具有 getvarsetvar方法,可用于获取和设置变量以其名称的值。

您可以使用cget方法获取与小部件关联的变量的名称。

示例:

var = tk.IntVar()
entry = tk.Entry(..., textvariable=var)
...
varname = entry.cget("textvariable")
value = entry.getvar(varname)
entry.setvar(varname, value+1)

您可以访问widget["textvariable"]与小部件关联的StringVar

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()

相关内容

最新更新