добавление панелей в GridSizer через цикл for WXpython - PullRequest
0 голосов
/ 03 октября 2018

Я застрял в этом вопросе и чувствую себя глупым.У меня есть 3 списка.list1 содержит все панели, которые будут добавлены в мои гридзайзеры.list2 содержит список моих гридзайзеров размером 3х3.Я пытаюсь добавить эти панели из первого списка в сортировщики, и как только он достигнет 9, поместите их в следующий гридзайзер.Ниже мой код и ошибка, которую я продолжаю получать

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?

1 Ответ

0 голосов
/ 03 октября 2018

извините, это было очень глупо.Если кто-то сталкивается с той же проблемой, вот что я сделал не так.Я добавил свои панели в гридзайзеры, и они пошли хорошо, но проблема возникла, когда внешняя петля снова зациклилась, потому что это означало, что я собирался снова добавить панели в гридзайзер!что на самом деле объясняет код ошибки.Я просто разделил вложенные циклы на 2 отдельных, и это сработало

...