Я не могу получить wx.Panel для правильного обновления - PullRequest
0 голосов
/ 03 июля 2019

У меня есть приложение, в которое включен этот модуль.Работа модуля заключается в получении и загрузке RSS-канала в приложение в зависимости от поставщика RSS-канала, выбранного пользователем.Модуль отлично справляется со своей работой, когда я не пытаюсь удалить записи из предыдущего запроса.

Когда я добавляю метод .Clear () в классификатор, содержащий все программно добавленные строки в пользовательском интерфейсе из запроса, они удаляются из памяти, но остаются в пользовательском интерфейсе.Я перепробовал много разных способов обновления пользовательского интерфейса, но это не так.Так что теперь каждый набор новых строк запроса закрашивается поверх старых строк запроса.

Вот суть модуля.Вы можете напрямую запустить его: https://gist.github.com/TiMladenov/64e55cafd4200373ba1f9ab82160cc00

Шаги для воспроизведения: 1. Выберите первый или второй вариант раскрывающегося списка 2. Затем выберите третий

Таким образом, проблема будет более очевидной.

Я пытался вызывать .Layout (), .Update (), .Fit () для их соответствующих объектов, которые делают этот модуль работающим, но, похоже, никто не выполняет свою работу.Или я где-то потерпел неудачу ....

1 Ответ

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

Вам не хватало только одной опции для метода Clear() в классе wx.BoxSizer.

Измените строку (87):

self.RssPanelList.Clear()

на:

self.RssPanelList.Clear(delete_windows=True)

Проблема в том, что метод Clear() по умолчанию не уничтожает виджеты.Поэтому вы опустошали сортировщик, но виджеты остались и рисовали друг на друге.

В будущем было бы лучше, если вы разместите MWE .Ваши шансы получить ответ будут намного выше с MWE в вопросе.

...