2013-03-21 49 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方法(即表示爲可打印字符串)的實現方式。