通过for循环WXpython向GridSizer添加面板

2024-09-29 01:22:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直被困在这个问题上,我觉得这是一个愚蠢的问题。我有三张单子。list1包含要添加到我的gridsizers的所有面板。list2包含一个我的gridsizer列表,它是3x3。我试着把这些面板从列表一添加到尺寸器中,一旦它达到9,然后放入下一个gridsizer。下面是我的代码和错误,我不断收到

listOfWaferPanels = []
listOfGridSizers = []
listOfPanels = []
for lotID, wafNum in df3.groupby(['LOT_WF']):
        df4 = wafNum[['X_COORD', 'Y_COORD', 'HB_NUM']]
        print(wafNum)
        print("\n")
        my_list = df4.transform(tuple, axis=1).tolist()
        self.temp_panels = wm_core.WaferMapPanel(self, my_list, waferDesign, data_type='discrete'.lower())
        listOfWaferPanels.append(self.temp_panels)
        waferNum += 1
numOfTabs = (waferNum//9) + 1
    for tab in range(numOfTabs):
        tabString = ("Page"+ str(tabNumber))
        tempGridSizers = wx.GridSizer(3,3,0,0)
        tempPanel = wx.Panel(self.waferTab,wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
        tabNumber += 1
        listOfGridSizers.append(tempGridSizers)
        listOfPanels.append(tempPanel)
for tab in range(numOfTabs):
        for i in range(waferNum):
            listOfGridSizers[i//9].Add(listOfWaferPanels[i], 1 , wx.EXPAND)
        listOfPanels[tab].SetSizer(listOfGridSizers[tab])
        self.waferTab.AddPage(listOfPanels[tab], "tab", select=False)

错误如下

listOfGridSizers[i//9].Add(listOfWaferPanels[i], 1 , wx.EXPAND)wx._core.wxAssertionError: C++ assertion "!sizer || m_containingSizer != sizer" failed at ..\..\src\common\wincmn.cpp(2470) in wxWindowBase::SetContainingSizer(): Adding a window to the same sizer twice?

Tags: inself面板forrangetabwxappend
1条回答
网友
1楼 · 发布于 2024-09-29 01:22:23

抱歉,这太傻了。如果有人遇到同样的问题,这就是我做错的地方。 我把我的面板添加到gridsizers,它们运行得很好,但是当外部循环再次出现时,问题出现了,因为这意味着我要再次将面板添加到gridsizer!这实际上解释了错误代码。我只是简单地将嵌套的for循环分成两个独立的循环,然后就成功了

相关问题 更多 >