我无法让 wx.Panel 正确刷新

I cannot get wx.Panel to refresh correctly

我有一个包含此模块的应用程序。该模块的工作是获取 RSS 提要并将其加载到应用程序中,具体取决于用户选择的 RSS 提要提供程序。当我不尝试从上一个查询中删除条目时,该模块完美地完成了它的工作。

当我将 .Clear() 方法添加到 sizer 时,包含查询中 UI 中所有以编程方式添加的行,它们将从内存中删除但保留在 UI 中。我尝试了很多不同的方法来进行 UI 更新,但没有成功。所以现在每组新查询行都被绘制在旧查询行上。

这是模块的要点。你可以直接运行它: https://gist.github.com/TiMladenov/64e55cafd4200373ba1f9ab82160cc00

重现步骤: 1. Select 第一个或第二个下拉选项 2.然后select第三个

这样问题会更明显

我已经尝试调用 .Layout()、.Update()、.Fit() 到使该模块正常工作的各自对象,但 none 似乎完成了它们的工作。或者我在某处失败了....

wx.BoxSizer class 中的 Clear() 方法只缺少一个选项。

更改行 (87):

self.RssPanelList.Clear()

至:

self.RssPanelList.Clear(delete_windows=True)

问题是 Clear() 方法默认不会销毁小部件。因此,您正在清空 sizer,但小部件仍然存在并在彼此之上绘制。

以后如果你在问题中post一个MWE. Your chances of getting an answer will be a lot better with a MWE就更好了