Python3 wx.TreeCtrl - как пройти через несколько уровней

YYC_Code спросил: 03 февраля 2018 в 01:19 в: python-3.x

У меня есть структура treectrl, которая заполнена внешним поиском открытого набора данных, организованного нашим муниципальным правительством. Данные относятся к бизнес-лицензиям и запрашиваются с использованием Pandas и Sodapy. Дерево заполняется следующим образом:

for index, row in results_df.iterrows():
        tradename = row['tradename']
        address = row['address']
        licTypes = row['licencetypes']
        comm = row['comdistnm']
        jobSts = row['jobstatusdesc']
        jobCrt = row['jobcreated']
        lng = row['longitude']
        lng = str(lng)
        lat = row['latitude']
        lat = str(lat)        # Populate Tree Controls with DataFrame values        trdName = self.thrTree.AppendItem(root, tradename)
        self.thrTree.AppendItem(trdName, address)
        self.thrTree.AppendItem(trdName, licTypes)
        self.thrTree.AppendItem(trdName, comm)
        self.thrTree.AppendItem(trdName, jobSts)
        self.thrTree.AppendItem(trdName, jobCrt)
        self.thrTree.AppendItem(trdName, lng)
        self.thrTree.AppendItem(trdName, lat)

Это приведет к окончательной структуре корня, а затем к узлу 1 с именем компании и при расширении содержит всю информацию, указанную выше, поэтому Я принимаю уровень корня, потом дочерний узел 1, потом child.child узла 1? Даже не уверен, как вызывается второй второй отступы. (Я слышал термин лист для третьего уровня, который использовался раньше). Но я отвлекаюсь; меня интересует захват широты и долготы того места, где расположен бизнес, а затем позволяет пользователю отображать местоположение, если они выбирают. Я привязываю wx.EVT_TREE_ITEM_ACTIVATED, так что, когда пользователь дважды нажимает на имя компании, чтобы получить детали, я хочу захватить отображаемые элементы. Вот как я сейчас пытаюсь выполнить итерацию через дочерние узлы.

item = self.thrTree.GetSelection()    while self.thrTree.GetItemParent(item):
        piece = self.thrTree.GetItemText(item)
        tmpHldr.insert(0, piece)
        item = self.thrTree.GetItemParent(item)

При взгляде на элемент он собирает все имена компаний под root и игнорирует элементы третьего уровня Интересно.

Что мне нужно сделать, чтобы углубиться в дерево, чтобы захватить детали под кликом, а не просто список бизнес-имен под корневым элементом, который называется "Поиск" Результаты?

Спасибо!


0 ответов