我需要通过添加大约300个复选框来动态更改对话框的内容。 我使用了一个wx.GridSizer和一个添加它们的循环,但它确实很慢。有没有办法更快地做到这一点?一些方法等待添加所有小部件,然后手动计算位置和大小,因为我相信通过调用Sizer的Add方法立即计算大小。 这是我所做的捷径:
... #Destroy all widgets we used to have
for el in self.elements:
_chk = wx.CheckBox(self,-1,el["name"])
_t1 = wx.StaticText(self,-1,el["age"])
_t2 = wx.StaticText(self,-1,el["city"])
self.checkboxes.append(_chk)
self.gridSizer.Add(_chk)
self.gridSizer.Add(_t1)
self.gridSizer.Add(_t2)
self.SetSizer(self.gridSizer)
self.Layout()
self.Refresh()
self.Update()
添加大约300个元素需要大约一分钟,我相信必须有更快的方法 因为例如像QIP或ICQ这样的应用程序在一秒钟内显示了很多联系人:) 谢谢你的任何线索!
另外请原谅我的英语。
雷
答案 0 :(得分:0)
我无法想到任何一次有300个小部件的界面。我不相信有一个很好的方法来实现这一目标。相反,您应该考虑重新设计界面,以便用户不必处理检查300个复选框(或处理数百个任何小部件)。唯一可以同时处理那么多复选框的小部件可能是带有复选框mixin的ListCtrl。请参阅演示中的示例。