【问题标题】:in need of something more than wxPython wx.ComboBox control需要的不仅仅是 wxPython wx.ComboBox 控件
【发布时间】:2014-01-22 11:53:15
【问题描述】:

我需要一个具有 VBA 组合框等功能的组合框控件。

我似乎无法从 wx.ComboBox 中挤出两件事:

  • 让它处理多个列 - 根据所选项目,我需要更多数据以使该项目进一步传递给不同的功能,就像我可以使用字典和选定的复选框项目一样其他值的键,我仍然需要在下拉列表中显示多个值,将其视为第 1 列包含一些员工 ID,第 2 列包含他的姓名等。在 VBA 中,列也可以具有特定宽度,因此可以“隐藏项目列表中的某些“仅供开发人员使用”的值。

  • 一种调整下拉菜单大小的方法 - 我需要多种形式的大量这些,“下拉”时可见项目的不同数量(实际上是下拉菜单高度),还可以根据提到的调整下拉菜单的宽度列,在 VBA 中,这些参数是 ListWidth、ColumnCount、ColumnWidths 等。

我需要的视觉示例

  1. 如果我不知道如何让 wx.ComboBox 做我想做的事,请赐教。
  2. 如果 wx.ComboBox 不能剪切它,也许我还有其他一些 wx 控件 不知道,这可能会发生在我身上吗?
  3. 如果没有,我想我只能扩展一些 wx 控件,添加我需要的东西?我不太擅长 OOP,但我想总得有 成为第一个,如果这是我唯一的举动,那么我至少会喜欢一些 关于最好使用哪个控件作为基础的建议。如果发生这种情况我会 可能稍后会发布我糟糕的代码并寻求更多帮助。
  4. 嘿,也许我实际上只剩下完全根据这篇文章进行自己的控制了吗? http://wiki.wxpython.org/CreatingCustomControls

或者也许已经有类似的东西,由某人制作,我可以使用?例如,我偶然发现了这个: http://forums.wxwidgets.org/viewtopic.php?f=20&t=8561 但那是 C++,不幸的是我几乎不知道,我可能会更早地采用上述步骤之一,而不是设法将其移植到 Python。除此之外,我认为步骤 1-4 对我来说难度越来越大,因此请告知您将如何解决该问题。

一如既往地欢迎任何帮助。干杯

【问题讨论】:

    标签: wxpython


    【解决方案1】:

    ComboBox 包装了本机小部件,因此它的功能非常有限。你将无法让它做你想做的大部分事情。但是,它确实允许您通过其 Append 方法为其中的每个项目存储对象。您可以在以下教程中阅读有关其工作原理的所有信息:

    您可以使用 ComboCtrl 获得与您想要的功能相似的功能,这是一个允许自定义弹出窗口的通用组合框。尽管 wxPython 演示中的示例几乎完全符合您的要求,但您可以修改弹出窗口本身以执行您想要的操作。我看到的唯一缺失的部分是演示没有可调整大小的弹出窗口。

    【讨论】:

    • 非常感谢 ComboCtrl 提示。我设法将此设置弯曲到我需要的位置 - 使用等宽字体并将 adodbapi 'resultset' 传递给构造函数我自动创建我需要的列,填充它们,将宽度设置为列中的最大元素并基于该设置弹出宽度。在弹出类中设置 ListCtrl 的初始值似乎很简单——我只是将 .val 和 .curitem 参数设置为 0(因为我希望第一个元素“预选”)。但是如何使该值也出现在 ComboCtrl 中?我的意思是在显示表单之后,现在只要我点击 ComboCtrl 它就会弹出
    • 啊,好的,我明白了。不知道我之前做错了什么,但我成功了。我添加了自己的方法 PreselectFirst(self) 并且除了设置前面提到的参数之外,我还添加了一行 self.GetCombo().SetText(self.GetStringValue())跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多