Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过函数将tkinter变量添加到字典_Python_Function_Dictionary_Tkinter - Fatal编程技术网

Python 通过函数将tkinter变量添加到字典

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元素到特定框架)。同一函数还将tkinter变量添加到字典中,以便更好地访问程序。现在,字典中有200多个变量,我决定将它们拆分为设置和参数

如何告诉函数将变量添加到设置dict(my_设置)或将其添加到参数dict(my_参数)


你想做这样的事吗

将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')