【问题标题】:very long pop-up menu in wxpythonwxpython中很长的弹出菜单
【发布时间】:2014-09-22 18:14:48
【问题描述】:

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

http://wiki.wxpython.org/PopupMenuOnRightClick

但是,我的菜单真的很长。作为部分解决方案,我使用子菜单对其进行了组织,但它总共包含数百个值(yikes)。

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

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

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

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

对比像这样:

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

提前感谢您的帮助!

【问题讨论】:

    标签: python drop-down-menu wxpython


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-11-07
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 2011-06-13
      • 2011-08-22
      • 2010-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多