我有以下代码将4个按钮添加到BoxSizer
for word in words:
btn = wx.Button(self, label=word)
btn.Bind(wx.EVT_BUTTON, self.onWordSelect)
Run Code Online (Sandbox Code Playgroud)
在我的onWordSelect方法中,我试图删除我在Sizer上创建的所有按钮,以便我可以重新创建新按钮.我的问题是除最后一个按钮外,所有按钮都被删除了.
这是我删除按钮的代码:
for child in self.sizer.GetChildren():
self.sizer.Remove(child.Window)
self.sizer.Layout()
Run Code Online (Sandbox Code Playgroud)
检查len(self.sizer.GetChildren())时返回0,但最后一个按钮仍然在屏幕上可见.
来自http://wxpython.org/docs/api/wx.Sizer-class.html#Remove:
由于历史原因,使用 wx.Window 参数调用此方法已被弃用,因为它无法销毁窗口,因为它由其父级拥有。您应该使用 Detach 来代替。
您从 sizer 中删除了元素,但它们仍然存在,并被打印在另一个之上:在循环中添加一行destroy或hide它们,它应该很好。
| 归档时间: |
|
| 查看次数: |
5100 次 |
| 最近记录: |