python-3.x - 是否可以在 wx.ComboBox 下显示 dict.values() 但将 dict.keys() 传输到 Bind 事件?
问题描述
我正在开发基于 wxpython 的 GUI,并且对 wx.Combobox 功能有以下问题:
是否可以在下拉列表中显示 dict.values() 并选择显示的项目之一,但在 Bind 事件中以某种方式发送该项目的 dict.key?我想以用户友好的方式呈现可供选择的可能选项 - 示例如下。
我认为字典应该是可能的,但不知道如何实现。
我正在使用 configparser 将 INI 文件中的所有部分解析为一个列表:
sections= ['123ABC456','123DEF456','123GHI456','123JKL456','123MNO456']
并将其分配给组合框:
self.combo_sections = wx.ComboBox(panel, choices=sections)
self.combo_sections.Bind(wx.EVT_COMBOBOX, self.on_combo_sections)
self.on_combo_sections function is parsing section's options.
我需要的是将列表项转换为可读格式:
['ABC','DEF','GHI','JKL','MNO']
并在组合框下拉列表下显示这些值。由于初始部分的值对于进一步的工作至关重要 - 基于部分名称,configparser 获取部分的选项,我如何发送原始值而不是格式化的值,但仍然在下拉列表下显示格式化的值?
提前感谢您的任何投入!
解决方案
wxComboBox
支持将所谓的“客户端数据”与其每个项目相关联,因此您可以使用它并将部分值存储为此客户端数据,然后只要您有组合框项目的索引,您就可以将它们取回。
或者,只需将您自己的数组保持在组合框项目的顺序中并将各个部分存储在其中——无论如何,这或多或少是“客户端数据”在内部实现的方式。
使用内置客户端数据支持的主要优点是,即使项目被添加/插入/删除到/从控件中,它也会保持同步,但是如果您的组合框在创建后没有更改,请使用您自己的数据结构应该更简单。
推荐阅读
- asp.net - 在 SQL Server 单元测试中声明临时表的语法
- mpeg-dash - DASH mpd 将 http 标头添加到所有请求
- android - 如何创建颤振图像滑块(例如 Flipkart 产品详细信息页面)
- android - 在 httpAuthHandler 使用正确的用户名/密码对后,如何使 Android webview 保存的令牌无效?
- r - 如何在 r 中获得下个月的第一个工作日
- javascript - 完成两个 Promise 后执行函数
- multithreading - 如何从循环外取消处于侦听循环中的 TCPListener?
- php - 启用 XDebug 时 [] Operator not supported for strings 当操作数为空数组时有时会发生错误
- html - Angular 中的可折叠手风琴,无需使用 JS 代码,仅使用 HTML。每当我单击按钮时,它什么也不做。请解决这个
- android - Firebase getCurrentUser 在 linkWithCredentials 之后返回 null 有时