編集:アクションによって消費される時間のほとんどは、ウィジェットをサイザーに配置するのではなく、実際にはウィジェットの作成に費やされていることを理解するために、もう少しデバッグしました。問題は、それらをより速く作成する方法です。
約 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 の要素を追加するのに約 1 分かかります。たとえば、QIP や ICQ などのアプリは 1 秒で多くの連絡先を表示するので、もっと速い方法があるに違いないと思います :) 手がかりをありがとう!
さらに、私の英語を許してください。
レイ