У меня проблема с инструментарием wxPython. Я использую объект wx.GridSizer для размещения сетки, отображающей некоторую информацию о состоянии. Мне нужно обновить эту сетку, и поэтому я придумал несколько разных способов сделать это. Я предпочитаю просто обновить / обновить текст, который требует обновления, поэтому я мог бы попытаться отсоединить объект wxStaticText от sizer, переписать его новым объектом wxStaticText и вставить объект обратно в sizer с его предыдущим индексом.
Лучший способ - использовать родительский класс wxGridSizer, wxSizer, у которого есть метод под названием «Заменить», который позволит мне заменить элемент в виджете, не вынимая его и вставляя его обратно. Гораздо больше пятно нет? Ну, я получаю очень странную ошибку при попытке использовать этот метод. Вот код с последующей ошибкой:
self.info_sizer.Replace(self.project_value, wx.StaticText(self, wx.ID_ANY, project))
self.info_sizer.Replace(self.project_value, wx.StaticText(self, wx.ID_ANY, project))
AttributeError: 'GridSizer' object has no attribute 'Replace'
Так что внезапно заменить это не вариант. Имейте в виду, что метод Insert, на который я ссылался ранее, является методом родительского класса sizer wxSizer. Таким образом, доказывается, что используемый им sizer, wxGridSizer, может успешно вызывать метод родительского класса (наследуемый, вложенный в класс) Insert.
Так почему я не могу аналогичным образом вызвать метод Replace?