wxPython禁用重绘

2024-09-29 23:25:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将wxpython2.8应用程序迁移到新的wxpython4

我面临的一个问题是:

我们有一个框架,一个笔记本里面有十几个面板,有些面板本身就有笔记本,设置所有这些面板需要相当长的时间。由于大多数用户只使用面板的一个子集,因此我们将所有面板初始化为空面板,然后,当用户单击选项卡时,他必须等待很短的时间,而所有元素都放置在面板上

在wx2.8中,这没有问题,当用户单击其中一个选项卡时,整个应用程序停止响应。初始化面板并完成布局后,面板将显示给用户

然而,与新的wx4,新的面板得到可见的立即和用户可以“观看”面板建设,并看到布局转移东西来回

所以我的问题是:

是否有任何方法可以有效地阻止WX应用程序更新/绘制任何内容,直到构建面板完成

“虚拟面板”代码:

class MyPanel(wx.Panel)
    def _createIfNotCreated(self):
        if self.is_created:
            return
        self.makeComponents()
        self.layoutComponents()
        self.is_created=1

    def notifyDisplay(self):
        self._createIfNotCreated()
        self.refresh()

    def makeComponents(self):
        self._t = StaticText(self, ...)
        [... lots of text, views, etc]

    def layoutComponents(self):
        sizer = BoxSizer(...)
        sizer.Add(...)
        [... etc...]
        self.setSizer(sizer)
        self.setAutoLayout(1)
        sizer.fitSizer(self)


Tags: 用户self应用程序面板isdef时间笔记本

热门问题