У меня есть TreeCtrl, в котором более чем одному элементу может быть назначен один и тот же объект, что и PyData. Когда объект обновляется, я хочу обновить все элементы в дереве, которые имеют этот объект в качестве своих PyData.
Я думал, что следующий код довольно аккуратно решит проблему, но по какой-то причине логический тест (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)
Изменить: приведенное выше, очевидно, является частью класса, основанного на wx.TreeCtrl.