我有一个 python3.8 菜单命令字典,我正在尝试使用函数中的菜单名称将这些函数添加到另一个字典中。所以 'save' 变成了 'self.menu_save' 不幸的是,当我用像 'self.menu_' + menuname 这样的连接方式保存它时,我在字典中得到一个不可执行的字符串,我可以手动输入名称,但是我可以构建一个类,菜单名称是从子类输入的 我希望能够做到这一点:
self.pri_menu = {'file': ['save', 'new', 'open', 'delete', 'print'],
'edit': ['select', "update", 'delete', 'insert']}
然后迭代:最后得到 {'save': self.menu_save, 'new':self.menu_new,...} 我目前的尝试给我留下了 {save:'self.menu_save','new':'self.menu_new',...}
self.menu_commands[y] = 'self.menu_' + y
self.menu_items[row].add_command(label=y, command=self.menu_commands[y])
这不起作用。 Y 是我的迭代器所以“保存”等等。 打印(self.menu_commands)=
{'save': 'self.menu_save', 'new': 'self.menu_new', 'open': 'self.menu_open', 'delete': 'self.menu_delete', 'print': 'self .menu_print', 'select': 'self.menu_select', 'update': 'self.menu_update', 'insert': 'self.menu_insert'}
我在一个类中这样做,所以引用/指针必须在类中.感谢所有帮助。
答案 0 :(得分:0)
x = 'self.menu_' + y
self.commands[y] = eval(x)
self.menu_items[row].add_command(label=y, command=self.commands[y])
效果很好,谢谢,只需要正确的搜索词,谷歌就帮了我。现在我也可以使用命令而无需像这样的菜单 self.commands['save'] 或 self.commands.get('save') 是蟒蛇。
我的下一个问题应该是向函数添加参数,但改天。