编辑:我进行了更多调试以意识到,动作所消耗的大部分时间实际上都花在了创建小部件上,而不是将它们放入 sizer 中。所以问题是如何更快地创建它们?
我需要通过添加大约 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 等应用程序会在一秒钟内显示大量联系人 :) 感谢您提供任何线索!
另外原谅我的英语。
射线