1
我正在嘗試使用PyGTK編寫的GUI的菜單中實現最近打開的項目列表。我初始化菜單像這樣:在PyGTK中動態修改/刷新菜單內容
self.filemenu = gtk.Menu()
self.init_file_menu()
self.fileitem = gtk.MenuItem("File")
self.fileitem.set_submenu(self.filemenu)
menubar = gtk.MenuBar()
menubar.append(self.fileitem)
outerframe.pack_start(menubar, False, False)
def init_file_menu(self):
for widget in self.filemenu.get_children():
self.filemenu.remove(widget)
openitem = gtk.MenuItem("Open")
self.filemenu.append(openitem)
openitem.connect("activate", self.open_file)
self.filemenu.append(gtk.SeparatorMenuItem())
for recentitem in self.settings['recentfiles']:
item = gtk.MenuItem(os.path.basename(recentitem))
self.filemenu.append(item)
item.connect("activate", self.open_file, recentitem)
self.filemenu.show()
self.settings [「recentitems」]是打開文件時被修改的雙端隊列;然後再次調用init_file_menu。我的目標是清空菜單,然後用正確的順序重新填充正確的項目。此代碼在啓動時填充菜單時工作正常。但由於某些原因,雖然對Menu.remove的調用都可以正常工作並清空菜單,但追加調用不會重新添加項目,並且它仍然爲空。如果我調用它的get_children方法,我發現它們都在內部,但接口沒有更新以反映這一點。如何刷新顯示的菜單並使最近的項目列表按預期工作?
我也接受如何使用RecentChooserMenu小部件的方向,如果這是我正在尋找。
啊,對,這比我想要的更有意義。 self.filemenu.show_all()也似乎工作。 – dpitch40