Можно ли отобразить dict.values ​​() в wx.ComboBox, но передать dict.keys () в событие Bind? - PullRequest
0 голосов
/ 08 июля 2019

Я работаю над графическим интерфейсом на основе wxpython и у меня есть следующий вопрос, касающийся функции wx.Combobox:

Можно ли отобразить dict.values ​​() в раскрывающемся списке и выбрать один из отображаемых элементов, но в событии Bind как-нибудь отправить dict.key для этого элемента? Я хочу представить возможные варианты выбора удобным для пользователя способом - пример ниже.

Я думаю, что это возможно с помощью словаря, но я не знаю, как это реализовать.

Я анализирую все разделы из INI-файла с помощью configparser в список:

sections= ['123ABC456','123DEF456','123GHI456','123JKL456','123MNO456']

и назначьте его в Combobox:

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 получает параметры раздела, как я могу отправить исходные значения вместо отформатированных, но при этом отобразить отформатированные значения в раскрывающемся списке?

Заранее спасибо за любые материалы!

1 Ответ

1 голос
/ 08 июля 2019

wxComboBox поддерживает связывание так называемых «данных клиента» с каждым из его элементов, так что вы можете использовать это и сохранить значение разделов в качестве данных клиента, тогда вы сможете получить их обратно, когда у вас есть индексэлемента комбинированного списка.

В качестве альтернативы, просто сохраняйте свой собственный массив в порядке элементов комбинированного списка и сохраняйте в нем разделы - это более или менее так, как «клиентские данные» реализованы внутренне так или иначе.

Основное преимущество использования встроенной поддержки данных клиента заключается в том, что она поддерживается в синхронизации, даже если элементы добавляются / вставляются / удаляются в / из элемента управления, но если ваш комбинированный список не изменяется после создания, используя собственную структуру данныхдолжно быть проще.

...