1

我有一个使用 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 控件的句柄?

4

2 回答 2

0

好吧,经过几天的摆弄,我找到了答案。万一它对其他人有帮助,或者万一我忘记并最终回到 StackOverflow 上再次找到答案,就在这里。

要获得菜单项的句柄,您必须使用GetMenuBar()wx 窗口的方法。

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'))
于 2016-11-01T13:52:13.220 回答
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 将不会接受下面的行。出于与您完全相同的原因,我想添加此评论-以防万一我最终再次寻找答案可能对其他人有所帮助。
再一次,你的信息真的帮助了我,我很感激你留下你的答案!

于 2018-05-27T09:52:14.017 回答