Python中如何将Tkinter下拉菜单选中的两个字符串拼接后引用对应字典
原因
你拼接得到的combined是字符串类型,Python不会自动将与变量名完全相同的字符串解析为对应的变量实例,因此你尝试对字符串执行字典索引操作会直接报错。
解决方案
方案1:通过全局变量字典快速取值(适合临时场景)
如果你的sizeschedule定义在全局作用域,可以直接调用Python内置的globals()字典,通过字符串key拿到对应的字典对象:
sizeschedule = {'1': 'one', '2': 'two'} # 下拉菜单选择完成后,你从StringVar中获取到如下值: firstdropdown = 'size' seconddropdown = 'schedule' combined = firstdropdown + seconddropdown # 得到字符串 'sizeschedule' print(globals()[combined]['1']) # 输出结果:one
方案2:统一映射收纳(生产环境推荐)
直接操作全局变量容易出现命名冲突、变量意外修改的问题,更稳妥的方式是提前把所有待匹配的字典收纳到一个总映射表中:
sizeschedule = {'1': 'one', '2': 'two'} # 后续新增其他同类字典也可以直接加在这个映射表里 config_mapping = { "sizeschedule": sizeschedule } # 下拉菜单选择完成后,你从StringVar中获取到如下值: firstdropdown = 'size' seconddropdown = 'schedule' combined = firstdropdown + seconddropdown # 得到字符串 'sizeschedule' print(config_mapping[combined]['1']) # 输出结果:one
如果你的字典定义在函数内部的局部作用域,临时场景也可以将globals()替换为locals()取值,依然优先推荐用统一映射的方案。
内容的提问来源于stack exchange,提问作者Multiple Use Labor Element
相关产品推荐
相关产品推荐

