私は、複数のアイテムにPyDataと同じオブジェクトを割り当てることができるTreeCtrlを持っています。オブジェクトが更新されると、そのオブジェクトをPyDataとして持つツリー内のすべてのアイテムを更新する必要があります。TreeCtrlのすべての要素をチェックしようとする無限再帰
私は次のコードで問題をきちんと解決できると思っていましたが、何らかの理由で論理テスト(current!= self.GetFirstVisibleItem())がtrueを返すと無限再帰が発生します。なぜ誰かが説明できますか?
def RefreshNodes(self, obj, current=None):
print "Entered refresh"
current = current or self.GetFirstVisibleItem()
if current.IsOk():
print self.GetPyData(current).name
if self.GetPyData(current) == obj:
self.RefreshNode(current)
current = self.GetNextVisible(current)
if current != self.GetFirstVisibleItem():
self.RefreshNodes(obj, current)
編集:上記はcurrent != self.GetFirstVisibleItem()
が偽であるために方法はありませんwx.TreeCtrl
+1:ドキュメントにリンクするための、および単語Iを使用するため) – tgray
GetNextVisibleItemはラップします。それ以外の場合は、テストツリーの6つの項目を通過した後に機能が終了します(関数の前のcurrent.IsOk()を確認しています)。 – mavnn
。問題が見つかりました、詳細は私の答えを見てください。 – mavnn