如何使用临时变量引用循环内创建的对象?

时间:2013-03-21 11:47:34

标签: python gtk pygtk

我有以下代码:

for file_name in file_list:
    menu_item = gtk.MenuItem(file_name)
    menu_item.show()
    menu.append(menu_item)

如何引用任何特定的menu_item,以便我可以致电hide()将其隐藏在我的菜单中?使用print menu.get_children()在内存中显示对象类型及其地址。

1 个答案:

答案 0 :(得分:2)

可能最好的方法是创建一个包含各种菜单项的字典。由于您为每个文件创建了一个菜单项,因此使用file_name作为相应menu_item的键可能是明智的。

menu_items = {}
for file_name in file_list:
    menu_item = gtk.MenuItem(file_name)
    menu_item.show()
    menu.append(menu_item)
    menu_items[file_name] = menu_item

现在,您可以使用menu_items[file_name].hide()访问为特定文件创建的菜单项并将其隐藏,或使用menu_items.values()获取所有菜单项。

或者,如果您不想为此创建单独的数据结构,则应该能够使用menu.get_children()获取添加到菜单中的所有菜单项的列表。 该列表包含实际的菜单项。它打印“对象类型及其在内存中的地址”就是如何实现菜单项的repr方法(即它作为可打印字符串的表示)。