wxpython中很长的弹出菜单

时间:2014-09-22 18:14:49

标签: python drop-down-menu wxpython

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

http://wiki.wxpython.org/PopupMenuOnRightClick

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

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

基本上,我真正想知道的是:在wxPython中优化一个非常大的菜单是否有最佳实践?

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

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

VS。像这样:

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

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

对我而言,这听起来像是糟糕的UI设计。你可能最好找出一种不同的方式来显示选择。例如,您可以通过继承wx.Dialog将选项放入自定义对话框中。然后你可以加载它并显示给用户。当用户完成选择项目时,您可以隐藏它,而不是销毁对话框。如果你想让它看起来像一个菜单,你可以在对话框中放置一个ScrolledPanel并指定它的大小。

关于字典组织的问题,您提到的两种方法没有功能差异。如果您想将项目添加到其中一个列表中,那么您使用后一种方法可能会更加明显,但这是关于它的。