我有一个带有框架的 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)