所以我开始使用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按钮radiobutons。但这并没有给我一个表格外观。所以我google了一下,发现你无法绘制网格的边框。所以我在每个网格位置添加了一个面板,在其上面我绘制了我的表组件。表看起来更好,但现在destroy方法不会清除面板的边框。
我正在创建这样的组件:
panel = wx.Panel(self, -1, style=wx.BORDER_SIMPLE)
wx.RadioButton(panel,-1,self.sids[i])
self.sidsGUI.append(panel)
clearPressed方法现在会破坏所有组件甚至部分边框,但不会破坏所有组件。我的基本gui结构如下:
Frame-&gt; MainFlexGridSizer-&gt; OneVerticalBoxSizer(这包含一些其他按钮以及我不想删除的内容) -------------------------------------&gt; TableArrangementFlexGridSizer-&gt; VetricalBoxSizer(包含表格标题和一些信息) -------------------------------------------------- ---------------------------------&gt; TableFlexGrid(包含表格的实际面板,其边框不会在销毁时消失) -------------------------------------------------- ---------------------------------&gt; VerticalBoxSizer(其他一些页脚按钮和信息)
此致 波格丹
答案 0 :(得分:1)
这似乎是一种非常复杂的方法。你看过使用wxGrid吗?您可能会失去一点灵活性,但是您将不得不编写大量代码来管理例如此类的常规网格管理任务。
答案 1 :(得分:0)
当你说“clearPressed方法现在破坏所有组件甚至部分边界但不是全部它们”时,你的意思是什么?这是否意味着在销毁所有组件后您在框架上看到了一些工件?如果是这样,那么尝试在clearPressed方法之后调用顶部框架的Refresh()方法。此方法将重绘框架及其所有子项。