我有一個應用程序,允許一些控制器更改主菜單欄的佈局。我通過將主菜單欄傳遞給控制器來完成此操作,然後控制器向其添加一些菜單。我的問題是綁定菜單點擊事件添加到這些菜單。這很容易在理論:爲什麼我不能直接將事件綁定到Windows中的wx.Menu?
def bind_main_menu_bar(self, main_menu_bar):
self.main_menu_bar = main_menu_bar
edit_menu = shared.create_menu([
(const.ID_UNDO, self.LABEL_UNDO_EMPTY),
(const.ID_REDO, self.LABEL_REDO_EMPTY),
(),
(const.ID_VALIDATE_ADDRESSES, 'Validate selected addresses'),
(const.ID_VALIDATE_ALL_ADDRESSES, 'Validate all addresses'),
])
edit_menu.Bind(wx.EVT_MENU, self.on_menu)
edit_menu.Bind(wx.EVT_UPDATE_UI, self.on_menu_update)
main_menu_bar.Insert(1, edit_menu, 'Edit')
這工作出色在OSX,但在Windows中,只有wx.EVT_MENU
事件直接綁定事件到edit_menu
菜單時的作品。換句話說,不會觸發wx.EVT_UPDATE_UI
事件處理程序。我也試過綁定EVT_MENU_OPEN
,EVT_MENU_CLOSE
和EVT_MENU_HIGHLIGHT
,但沒有一個能夠工作。當我將它們綁定到頂層框架時,它們都可以工作,但是無法將事件處理程序僅限於edit_menu
菜單。
這是一個錯誤,還是有我忽略的東西?另外,任何人都可以針對我的問題找到解決方法嗎?
我在窗口8.
什麼是'shared.create_menu'?你能分享一下代碼,或者說清楚你指的是哪個內置函數嗎?! –