В настоящее время я использую wx.CustomTree, чтобы отобразить серию параметров конфигурации. Я обычно заполняю их с помощью wx.TextCtrl / wx.Combobox, чтобы позволить пользователю редактировать / вводить материал. Вот мой код:
class ConfigTree(CT.CustomTreeCtrl):
"""
Holds all non gui drawing panel stuff
"""
def __init__(self, parent):
CT.CustomTreeCtrl.__init__(self, parent,
id = common.ID_CONTROL_SETTINGS,
style = wx.TR_DEFAULT_STYLE | wx.TR_HAS_BUTTONS
| wx.TR_HAS_VARIABLE_ROW_HEIGHT | wx.TR_SINGLE)
#self.HideWindows()
#self.RefreshSubtree(self.root)
self.population_size_ctrl = None
self.SetSizeHints(350, common.FRAME_SIZE[1])
self.root = self.AddRoot("Configuration Settings")
child = self.AppendItem(self.root, "Foo", wnd=wx.TextCtrl(self, wx.ID_ANY, "Lots Of Muffins"))
Проблема в том, что любые дочерние узлы, данные для этих узлов не заполнены. Когда я в основном раскрываю узел дерева настроек конфигурации. Я вижу узел "Foo", однако текстовое поле пустое. Это одинаково для обоих текстовых узлов, пока я фактически не нажму на дочерний узел. Я смотрел пробовал все формы обновления / и т.д. Есть ли у кого-нибудь идеи?
Кому: Анураг Униял
Во-первых, извините за то, что не дал остальной код. Я справился с этой проблемой, просто меняя размер окна каждый раз, когда я демонстрировал приложение.
Итак, я попробовал код на моем Macbook Pro под Mac OS X с новейшими версиями wx и python 2.6. У меня все еще остается та же проблема, однако я заметил, что изменение размера окна или даже касание полосы прокрутки устраняет проблему.
Я также заметил, что в Windows Vista / Windows 7 проблем абсолютно НЕТ.
Итак, попробуем это на другом macbook, работающем под управлением более старой версии wx + python. Результаты в той же задаче: (
Есть ли способ заставить панель перерисовать ее самостоятельно? Что, я уверен, происходит, когда я изменяю размер окна.
Если у вас нет идей, тогда я разберу их и приведу демонстрационный пример, я дома и не буду на работе до завтрашнего дня.