【发布时间】:2021-02-23 21:20:10
【问题描述】:
Centos 7.4, 蟒蛇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
【问题讨论】:
-
我没有看到对
myFrame.Thaw()的呼叫。 -
这是我可以编写的最简单的代码来显示我的问题,即调用 Freeze,而不是 Thaw。在我的完整代码中,我调用了 thaw,这会将黑色小部件恢复正常。但我的问题是,对 Freeze 的调用不应该首先将我的小部件变成黑色。
-
为什么首先需要调用它?正如 vadim 指出的那样,这很少需要。
-
我在我的完整代码中使用它以防止屏幕在冻结时更新。直到我想要更新屏幕,我称之为 Thaw。
-
你为什么在
Show()之后打电话给Freeze()?你可以试着反过来做......
标签: wxpython wxwidgets gtk3 freeze-thaw