Так что я начал использовать wx для генерации моего GUI. Я создал пользовательскую таблицу, используя FlexGridSizer, и затем я хотел очистить таблицу, когда я нажимаю кнопку. Итак, мой метод:
def clearPressed(self,event):
self.label_ID.Destroy()
self.label_NAME.Destroy()
self.label_ADMIN.Destroy()
self.label_SELECTED.Destroy()
self.label_OPERATION.Destroy()
self.label_STRUCTURE.Destroy()
i = 0
while i < self.nrEntries:
self.idsGUI[i].Destroy()
self.pidsGUI[i].Destroy()
self.aidsGUI[i].Destroy()
self.sidsGUI[i].Destroy()
self.nidsGUI[i].Destroy()
self.stidsGUI[i].Destroy()
i = i + 1
self.clearBut.Destroy()
self.tableTitleLabel.Destroy()
self.tableGrid.Layout()
Это в основном все компоненты, которые есть у меня в таблице. Этот метод прекрасно работает для радиобутонов кнопок StaticText. Но это не дает мне взглянуть на стол. Поэтому я немного погуглил и обнаружил, что вы не можете нарисовать границы сетки. Таким образом, я добавил панель в каждой ячейке сетки, поверх которой я рисую компоненты своей таблицы. Таблица выглядит лучше, но теперь метод уничтожения не очищает границы панелей.
Я создаю свои компоненты так:
panel = wx.Panel(self, -1, style=wx.BORDER_SIMPLE)
wx.RadioButton(panel,-1,self.sids[i])
self.sidsGUI.append(panel)
Метод clearPressed теперь уничтожает все компоненты и даже часть границ, но не все. Моя основная структура графического интерфейса выглядит следующим образом:
Frame-> MainFlexGridSizer-> OneVerticalBoxSizer (это содержит некоторые другие кнопки и вещи, которые я не хочу удалять)
-------------------------------------> TableArrangementFlexGridSizer-> VetricalBoxSizer (содержит заголовок таблицы и некоторую информацию)
-------------------------------------------------- ---------------------------------> TableFlexGrid (содержит фактические панели для таблицы, границы которой не исчезают при уничтожении)
-------------------------------------------------- ---------------------------------> VerticalBoxSizer (некоторые другие кнопки нижнего колонтитула и информация)
С уважением,
Богдан