我有一个使用XRC定义的菜单,如下所示:
<object class="wxMenuItem" name="MenuItem_ShowTooltips">
<label>Show tooltips</label>
<checkable>1</checkable>
</object>
我在我的应用程序中初始化它的父框架,如下所示
self.frame = self.res.LoadFrame(None, 'MainFrame')
当我的应用程序启动时,我检查用户首选项文件以获取初始值(在这种情况下为布尔值),并希望根据该参数检查或取消选中MenuItem。使用正常的wx控件,我可以使用像
这样的东西 self.MenuItem_ShowTooltips.Check(self.UserPreferences['ShowTooltips'])
如何处理XRC创建的MenuItem_ShowTooltips控件?
答案 0 :(得分:0)
好吧,经过几天的摆弄,我找到了答案。万一它可以帮助其他人,或者万一我忘了并最终回到StackOverflow再次找到答案,这里就是。
要获得菜单项的句柄,您必须使用wx窗口的GetMenuBar()
方法。
self.MenuItem_ShowTooltips = self.TopWindow.GetMenuBar().FindItemById(xrc.XRCID('MenuItem_ShowTooltips'))
一旦你有了处理,就可以像这样设置它的检查状态
self.MenuItem_ShowTooltips.Check(self.UserPreferences['ShowTooltips'])
然后将它绑定到像这样的事件
self.frame.Bind(wx.EVT_MENU, self.SaveUserPrefs, id=xrc.XRCID('MenuItem_ShowTooltips'))
答案 1 :(得分:0)
这帮助我解决了我的问题 - 谢谢,虽然我发现我也按照下面的示例首先绑定了菜单:
self.frameMain.Bind(wx.EVT_MENU, self.event_thatdoes_stuff, id=xrc.XRCID('name_from_xrc'))
self.mymenu_handler = self.frameMain.GetMenuBar().FindItemById(xrc.XRCID('name_from_xrc'))
如果没有上面示例中的第一行,python将不接受下面的行。我想添加这个评论的原因与你做的完全相同 - 如果我最后再回来寻找答案,可能会帮助其他人。
再次,您的信息真的帮助了我,我感谢您留下您的答案!