일부 컨트롤러가 주 메뉴 모음의 레이아웃을 변경할 수있는 응용 프로그램이 있습니다. 메인 메뉴 바를 컨트롤러에 넘겨줌으로써 컨트롤러가 컨트롤러에 메뉴를 추가합니다. 내 문제는 메뉴 추가 이벤트에 대한 바인딩 이벤트입니다.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에서 훌륭하게 작동하지만 edit_menu
메뉴로 직접 이벤트를 바인딩 할 때 Windows에서 만 wx.EVT_MENU
이벤트가 작동 : 그것은 이론적으로 매우 간단합니다. 즉, wx.EVT_UPDATE_UI
이벤트 핸들러가 실행되지 않습니다. 또한 EVT_MENU_OPEN
, EVT_MENU_CLOSE
및 EVT_MENU_HIGHLIGHT
과 같은 바인딩을 시도했지만 그 중 아무 것도 작동하지 않습니다. 최상위 수준 프레임에 바인딩 할 때 모두 작동하지만 이벤트 처리기를 edit_menu
메뉴로만 제한 할 수는 없습니다.
이 버그입니까? 아니면 내가 간과하는 것이 있습니까? 또한, 누구든지 내 문제에 대한 해결책을 찾을 수 있습니까?
나는 윈도우 8
무엇이'shared.create_menu'입니까? 코드를 공유하거나 참조하고있는 내장 함수를 명확히 할 수 있습니까? –