【发布时间】:2017-03-17 21:18:26
【问题描述】:
我有这个(我省略了不相关的代码):
class TaskBarIcon(wx.TaskBarIcon):
def __init__(self, frame):
self.frame = frame
super(TaskBarIcon, self).__init__()
def CreatePopupMenu(self):
self.menu = wx.Menu()
self.menu.chk = self.menu.Append(101, 'Show statubar', 'Show Statusbar', kind=wx.ITEM_CHECK)
self.menu.Check(101, True)
self.Bind(wx.EVT_MENU, self.on_tog, id=101)
return self.menu
哪个有效,菜单项的检查就在那里。这是 Linux 中带有右键菜单的系统托盘图标。
但是当我这样做时:
def on_tog(self, event):
self.menu.Check(self.menu.chk.GetId(), False) #Uncheck running box
它不会取消选中自身。即使我将 GetID() 替换为实际 ID 101,它仍然不会取消选中。
我在这里缺少什么?除了我所做的之外,没有太多关于更改此设置的文档,但它不起作用。
【问题讨论】:
-
这显然是某种错误,如果您最初设置
Check(101,True),即使通过可见检查菜单项并打印IsChecked(101)返回True,一旦您在回调函数中,同样的IsChecked(101)返回 False ,但该项目仍处于可见检查状态。如果您切换值,则相反。我认为这与TaskBarIcon有关,因为这显然可以正常工作。 -
对。而且即使我在函数中输入
print(self.menu.chk.GetID()),它也会返回101,这是正确的。但是由于某种原因,Check 功能不起作用。