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()と、オブジェクトの種類とそのメモリ内のアドレスが表示されます。

4

1 に答える 1

2

おそらく最良の方法は、さまざまなメニュー項目を保持する辞書を作成することです。ファイルごとに 1 つのメニュー項目を作成する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メソッド (つまり、出力可能な文字列としての表現) が実装されている方法です。

于 2013-03-21T12:08:42.810 に答える