wxpython中的超长弹出菜单

wxpython中的超长弹出菜单,python,drop-down-menu,wxpython,Python,Drop Down Menu,Wxpython,我在wxpythongui中有一个弹出菜单。菜单的工作原理与wiki上的简单示例基本相同: 然而,我的菜单真的,真的很长。作为部分解决方案,我使用子菜单来组织它,但它总共包含数百个值(yikes) 我想知道的是。按照目前的设置方式,每次用户单击时,wxPython都必须从头开始重新生成菜单。这使我无法将值设置为生成器而不是列表,我最初认为这会使菜单更高效。此外,似乎每次用户单击时都必须销毁并重新创建菜单(使用menu.Destroy()),以防止内存问题,因此我无法以这种方式进行优化 基本上,

我在wxpythongui中有一个弹出菜单。菜单的工作原理与wiki上的简单示例基本相同:

然而,我的菜单真的,真的很长。作为部分解决方案,我使用子菜单来组织它,但它总共包含数百个值(yikes)

我想知道的是。按照目前的设置方式,每次用户单击时,wxPython都必须从头开始重新生成菜单。这使我无法将值设置为生成器而不是列表,我最初认为这会使菜单更高效。此外,似乎每次用户单击时都必须销毁并重新创建菜单(使用menu.Destroy()),以防止内存问题,因此我无法以这种方式进行优化

基本上,我真正想知道的是:wxPython中有优化超大菜单的最佳实践吗

作为一个附带问题,我使用字典来包含菜单值。如果我这样组织,会有什么不同吗

    d = {'A': [value1, value2], 'B': [value3, value4]}
    a = [value1, value2]
    b = [value3, value4]
    d = {'A': a, 'B': b}
与此相反:

    d = {'A': [value1, value2], 'B': [value3, value4]}
    a = [value1, value2]
    b = [value3, value4]
    d = {'A': a, 'B': b}

提前感谢您的帮助

对我来说,这听起来像是糟糕的UI设计。您可能最好找出一种不同的显示选项的方式。例如,可以通过子类化wx.dialog将选项放入自定义对话框中。然后您可以加载它并将其显示给用户。用户完成拾取项目后,您可以将其隐藏,而不是销毁对话框。如果您想让它看起来像一个菜单,您可以在对话框中放置一个滚动面板并指定其大小

至于你关于词典组织的问题,你提到的两种方法在功能上没有区别。如果您想将项目添加到其中一个列表中,那么使用后一种方法所做的事情可能会稍微明显一些,但仅此而已