0

我是 wxWidgets 的新手。我很想使用其他人为数据分析工具提供 GUI 的例程。我无法联系到作者......但我在第 106 行收到此错误:

PyAssertionError: C++ assertion "!sizer || m_containingSizer != sizer" failed at /BUILD/wxPython-src-2.9.2.4/src/common/wincmn.cpp(2275) in SetContainingSizer(): Adding a window to the same sizer twice?

有问题的代码如下所示:

        coord_panel = wx.Panel(pane, WID.ANY)
    grid_sizer = wx.FlexGridSizer(3,4)
    coord_panel.SetSizer(grid_sizer)
    rc_x_label =  wx.StaticText(coord_panel, WID.ANY, "x :")
    rc_y_label =  wx.StaticText(coord_panel, WID.ANY, "y :")
    rc_z_label =  wx.StaticText(coord_panel, WID.ANY, "z :")
    self.rc_x = wx.TextCtrl(coord_panel, WID.ANY, style=wx.TE_READONLY, size=(75,-1))
    self.rc_y = wx.TextCtrl(coord_panel, WID.ANY, style=wx.TE_READONLY, size=(75,-1))
    self.rc_z = wx.TextCtrl(coord_panel, WID.ANY, style=wx.TE_READONLY, size=(75,-1))
    empty_label = wx.StaticText(coord_panel, WID.ANY, "  ")
    self.edit_cam_btn = wx.Button(coord_panel, -1, "Edit", size=(50,-1))
    grid_sizer.AddMany([(rc_x_label, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT),
                        (self.rc_x, 0), (empty_label, 0), (empty_label, 0),\
                        (rc_y_label, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT), \
                        (self.rc_y, 0), (empty_label, 0), (self.edit_cam_btn, 0),\
                        (rc_z_label, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT), \
                        (self.rc_z, 0), (empty_label, 0)])

它正在在线生成错误grid_sizer.AddMany。有人看到这个问题吗?

谢谢!

4

1 回答 1

-1

代码不正确,不能empty_label多次将同一个控件添加到sizer。每次都需要创建一个新控件(幸运的是,对于空标签来说这不是很困难)。

一个更好的主意是完全避免使用空标签并使用间隔符或仅使用行内间隙,但这需要对代码进行更多更改。

于 2013-08-15T21:17:02.510 回答