У меня проблема с набором инструментов wxPython. Я использую объект wx.GridSizer для размещения сетки, отображающей некоторую информацию о состоянии. Мне нужно обновить эту сетку, поэтому я придумал несколько разных способов сделать это. Я предпочитаю просто обновлять/обновлять текст, который нуждается в обновлении, поэтому я могу попробовать отсоединить объект wxStaticText от сайзера, перезаписать его новым объектом wxStaticText и вставить объект обратно в сайзер по его предыдущему индексу.
Лучший способ — использовать родительский класс 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, о котором я упоминал ранее, является методом родительского класса сайзера wxSizer. Таким образом, доказывается, что размерчик, который я использую, wxGridSizer, может успешно вызывать метод своего родительского класса (унаследованный, подкласс) Insert.
Так почему же я не могу вызвать аналогичным образом метод Replace?