首页 > 解决方案 > 如何将子菜单项添加到 wxPython 中的弹出菜单项?

问题描述

我想向现有的弹出菜单项添加一些子菜单项。我找到了几个关于如何为标准菜单创建子菜单的示例,但没有关于为弹出菜单创建子菜单的示例。

我尝试将与标准菜单相同的逻辑应用于弹出菜单,但未能正确执行(同时我在创建带有子菜单的标准菜单时没有问题)。

在下面的部分代码中,如何添加子菜单?

# ...

class ButtonContext(wx.Menu):
    def __init__(self, parent):
        super(ButtonContext, self).__init__()
        self.parent = parent
 
        button_popup = wx.MenuItem(self, wx.ID_ANY, 'test popup')
        self.Append(button_popup)
        self.Bind(wx.EVT_MENU, self.button_action, button_popup)
 
    def button_action(self, event):
        event.Skip()

# ...

标签: pythonwxpython

解决方案


这会起作用,实际上弹出菜单是基于wx.Menu类的,所以逻辑和行为是相同的

class ButtonContext(wx.Menu):
    def __init__(self, parent):
        super(ButtonContext, self).__init__()
        self.parent = parent

        button_popup = wx.MenuItem(self, wx.ID_ANY, 'test popup')
        submenu_popup = wx.Menu()
        submenu_button_popup = wx.MenuItem(self, wx.ID_ANY, 'test submenu popup')
        submenu_popup.Append(submenu_button_popup)
        self.AppendSubMenu(submenu_popup, "submenu")
        self.Append(button_popup)
        self.Bind(wx.EVT_MENU, self.button_action, button_popup)

推荐阅读