Python 通过函数将tkinter变量添加到字典
我创建了一个函数来添加标签(或其他tkinter元素到特定框架)。同一函数还将tkinter变量添加到字典中,以便更好地访问程序。现在,字典中有200多个变量,我决定将它们拆分为设置和参数 如何告诉函数将变量添加到设置dict(my_设置)或将其添加到参数dict(my_参数)Python 通过函数将tkinter变量添加到字典,python,function,dictionary,tkinter,Python,Function,Dictionary,Tkinter,我创建了一个函数来添加标签(或其他tkinter元素到特定框架)。同一函数还将tkinter变量添加到字典中,以便更好地访问程序。现在,字典中有200多个变量,我决定将它们拆分为设置和参数 如何告诉函数将变量添加到设置dict(my_设置)或将其添加到参数dict(my_参数) 你想做这样的事吗 将tkinter作为tk导入 masterframe=tk.tk() my_settings=dict() my_params=dict() def add_标签(帧、关键帧、默认值=无、设置=假):
你想做这样的事吗
将tkinter作为tk导入
masterframe=tk.tk()
my_settings=dict()
my_params=dict()
def add_标签(帧、关键帧、默认值=无、设置=假):
#如果关键字设置为True,将更新“我的设置”。否则将更新“我的参数”。
var=tk.StringVar()
变量集(默认值)
inputframe=tk.Frame(帧)
inputframe.pack(side='top',padx=5,pady=5,fill='x')
label=tk.label(inputframe,text=key,width=10)
标签.包装(侧边='左')
label=tk.label(inputframe,textvariable=var,width=10)
标签.包装(侧边='左')
#将它附加到dict中
如果设置:
my_settings.update({key:var})
其他:
我的参数更新({key:var})
添加标签(主框架“a”、“123”)
添加标签(主框架“b”、“456”)
添加标签(主框架“c”、“789”)
添加标签(主框架,“设置”,“789”,设置=真)
打印(我的参数)
打印(我的设置)
masterframe.mainloop()
我想你应该看看一些
dict
教程。你可以通过在add\u label
中添加一个组参数来实现这一点。我用“p”表示参数,“s”表示设置,但它可以是任何东西。然后,它使用if语句确定要将其添加到哪个字典
def add_label(frame, key, group, default=None):
if group == 'p':
d = my_params
elif group == 's':
d = my_settings
d[key] = tk.StringVar()
d[key].set(default)
inputframe=tk.Frame(frame)
inputframe.pack(side='top', padx=5, pady=5, fill='x')
label = tk.Label(inputframe, text=key, width=10)
label.pack(side='left')
label = tk.Label(inputframe, textvariable=d[key], width=10)
label.pack(side='left')
add_label(masterframe, 'a', 'p', '123')
add_label(masterframe, 'b', 's', '456')
add_label(masterframe, 'c', 's', '789')
您试图实现的是什么?我认为这是一个更好、更灵活的解决方案。不幸的是,无法将字典名称作为参数传递给函数。无论如何,谢谢!
def add_label(frame, key, group, default=None):
if group == 'p':
d = my_params
elif group == 's':
d = my_settings
d[key] = tk.StringVar()
d[key].set(default)
inputframe=tk.Frame(frame)
inputframe.pack(side='top', padx=5, pady=5, fill='x')
label = tk.Label(inputframe, text=key, width=10)
label.pack(side='left')
label = tk.Label(inputframe, textvariable=d[key], width=10)
label.pack(side='left')
add_label(masterframe, 'a', 'p', '123')
add_label(masterframe, 'b', 's', '456')
add_label(masterframe, 'c', 's', '789')