我有一个有框架的GUI,我试图将主要内容放入一个面板,使用绝对定位向其中添加组件。这在Linux上运行,但是当我在Windows上运行它时,有一个断言触发声明:
wx._core.PyAssertionError: C++ assertion "!GetChildren().Find((wxWindow*)child)" failed at ..\..\src\common\wincmn.cpp(945) in wxWindowBase::AddChild(): AddChild() called twice
这是由我添加到面板的第一个组件触发的。所以我的问题是如何解决这个问题,为什么这个问题不会发生在Linux上?
感谢任何帮助。
""" Defines the main GUI panel for the app. """ import wx class MainGuiPanel(wx.Panel): def __init__(self, parent, size): wx.Panel.__init__(self, parent, size=size) self.SetMinSize(size) self.Bind(wx.EVT_PAINT, self.on_paint) self.createGui() def createGui(self): """ Create controls on the main panel UI. We use fixed positioning over layout managers as it gives a cleaner looking result. """ 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, "Generator Power" , 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(self, event): """ Paint the background with a slight gradient """ dc = wx.PaintDC(self) x = 0 y = 0 w, h = self.GetSize() dc.GradientFillLinear((x, y, w, h), 'white', 'light grey', nDirection = wx.SOUTH)
绝不能像留档中明确提到的那样调用addChilds()
。
您还应该意识到,使用绝对位置是一个非常糟糕的主意,在实践中,它永远不会起作用,尤其是在使用像素(而不是对话框单位)时。
我正在构建一个Java程序。该程序的核心在JFrame中可视化,其中包含一个JMenuBar和各种JMenuItem和JMenu。关键是我在所有框架中添加了一个centralPanel,但是如果我在centralPanel中添加了一些内容,那么只有在调整主框架的大小、缩小或放大它时,它才会显示出来!代码如下: 这是构造函数: 在这里,我添加了中央面板,在这里,在ActionListener中,我试
问题内容: 我有一个ajax电话 现在,这里是10分钟后收到的答复。因此,ajax调用被多次调用。为什么会发生这种情况/我们如何确保ajax调用仅被调用一次? 问题答案: 禁用按钮的另一种方法是使用.one()方法,并在回调后重新绑定事件处理程序:
我有一个聊天应用程序,当我在输入消息后单击按钮时,消息会发布到我的DynamoDB表中。该应用程序应该发布一次消息,但不知何故发布了两次。 管道如下: 客户端单击“发送”按钮-- 在SO的帮助下,我已经将问题隔离到我的Google Cloud函数异步调用Lambda,该函数将Lambda排队两次。 使用async,请求在实际执行之前排队。所以,如果您调用它一次,AWS将检查是否已经有一个正在执行,
问题内容: 我有以下代码,但我的问题是该事件被触发了两次。我不知道是什么原因造成的。我怀疑是由供应商前缀引起的,但并非如此。即使我只离开,它仍然会开火两次。 CSS JS 问题答案: 对于您和,每个已转换的属性都会触发。 您可以在访问与事件关联的属性。 没有“ transition s end”事件,因此您可能需要一些技巧,例如仅过滤其中一个过渡属性的回调处理。例如: ps。没有浏览器会触发该事件
我是个新手,所以不要用任何非技术性的词语。我有一个父组件,它在单击按钮时有一个按钮元素,调用一个函数来创建一个新对象。我想要的是,当用户单击这个按钮时,子组件应该呈现在父按钮元素下面,每次单击按钮时,新对象应该作为道具传递给子组件,以便它可以在屏幕上显示它,但以前调用的子组件应该保留在屏幕上。 从React导入; 类父母组件扩展反应。PureComponent{ }
问题内容: 运行时,它将软件包安装在我的用户/ AppData / Roaming / npm / npm_modules /文件夹中。该子文件夹不在我的PATH中,因此,如果我尝试运行该程序包而不显式调用整个路径,则调用失败,并显示一个 我该怎么做才能解决此问题? 谢谢 问题答案: 我使用的是win8.1,发现nodejs安装程序未将全局节点模块的路径添加到系统PATH。只需添加到 用户变量 (