我有一个带有框架的 GUI,我正在尝试将主要内容放入面板中,并使用绝对定位向其中添加组件。这在 Linux 上运行,但是当我在 Windows 上运行它时,有一个断言触发说明:
wx._core.PyAssertionError: C++ 断言 "!GetChildren().Find((wxWindow*)child)" 在 wxWindowBase::AddChild() 中的 ..\..\src\common\wincmn.cpp(945) 失败:AddChild () 调用了两次
这是由我添加到面板的第一个组件触发的。所以我的问题是如何解决这个问题,为什么这个问题不会在 Linux 上发生?
谢谢你的帮助。
""" 定义应用程序的主 GUI 面板。 """ 导入 wx 类 MainGuiPanel(wx.Panel): def __init__(self, parent, size): wx.Panel.__init__(self, parent, size=size) self.SetMinSize(大小) self.Bind(wx.EVT_PAINT, self.on_paint) self.createGui() def createGui(self): """ 在主面板 UI 上创建控件。我们在布局管理器上使用固定定位,因为它可以提供更清晰的结果。 """ x = 7 y = 8 self.AddChild(wx.StaticText(self, -1, "PV Power" , wx.Point(x, y))) self.pvPowerTF = wx.TextCtrl(self,-1, "0 kW", wx.Point(x + 105, y - 2), wx.Size(100, 20), style=wx.TE_READONLY) self.AddChild(self.pvPowerTF) y += 28 self.AddChild(wx.StaticText(self, -1, "Load Power" , wx.Point(x, y))) self.loadPowerTF = wx.TextCtrl(self,-1, "0 kW", wx.Point(x + 105, y - 2), wx.Size(100, 20), style=wx.TE_READONLY) self.AddChild(self.loadPowerTF) y += 28 self.AddChild(wx.StaticText(self, -1, "发电机功率" , wx.Point(x, y))) self.generatorPowerTF = wx.TextCtrl(self,-1, "0 kW", wx.Point(x + 105, y - 2), wx.Size(100, 20), style=wx.TE_READONLY) self.AddChild(self.generatorPowerTF) def on_paint(自我,事件): """ 用轻微的渐变绘制背景 """ dc = wx.PaintDC(self) x = 0 y = 0 w, h = self.GetSize() dc.GradientFillLinear((x, y, w, h), '白色', '浅灰色', nDirection = wx.SOUTH)