wxPython方法冻结将小部件变黑

问题描述

Centos 7.4, Python 3.6.8, wxPython 4.1.0

import wx
app = wx.App()
myFrame = wx.Frame(None,title="")
myPanel = wx.Panel(myFrame)
myStaticText = wx.StaticText(myPanel,label="Hello World")
mySizer = wx.BoxSizer(wx.VERTICAL)
mySizer.Add(myStaticText,wx.SizerFlags().Center())
myPanel.SetSizer(mySizer)
myFrame.Show()
#myFrame.Freeze()
app.MainLoop()

在运行上述代码时,将出现一个小部件,其中显示文本“ Hello World”。但是,如果代码在注释行未注释的情况下运行,则会显示一个全黑的小部件。为什么此Freeze调用会更改小部件的显示?冻结应该防止对小部件显示进行任何更新。

依赖关系:gtk3-devel,libXtst-devel,libtiff-devel,gcc gcc-c ++ epel-release,libglu-devel

解决方法

Freeze()应该在重复修改窗口小部件时暂时抑制更新显示,以避免不必要的中间刷新和闪烁,但是窗口小部件必须解冻,以便最终正确重绘。就像您观察到的那样,将其保持冻结状态将阻止对其进行更新。

通常,您很少需要使用此方法。这是一种优化,绝对不是您必须使用的东西。