如何以编程方式设置Python XRC MenuItem的选中状态



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

嗯,经过几天的摸索,我找到了答案。如果它对其他人有所帮助,或者如果我忘记并最终回到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'))

这帮助我解决了我的问题-谢谢,虽然我发现我也绑定到菜单首先按照下面的例子:

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将不接受下面的行。我想添加这条评论的原因和你完全一样——如果我最终再次寻找答案,它可能会对其他人有所帮助。
再一次,你的信息真的帮助了我,我很感激你留下你的答案!

相关内容

  • 没有找到相关文章

最新更新