2013-03-21 27 views
1

我有以下代码:如何使用临时变量引用循环内创建的对象?

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()显示对象类型及其在内存中的地址。

+0

你想如何选择要隐藏的物品? – wRAR 2013-03-21 11:58:38

回答

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方法(即表示为可打印字符串)的实现方式。