Не могу перебрать базу данных для построения treectrl в WxPython - PullRequest
0 голосов
/ 10 мая 2011
import wx
import sqlite3 as lite

class MyFrame(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, wx.DefaultPosition, wx.Size(450, 350))

        vbox = wx.BoxSizer(wx.VERTICAL)

        self.tree = wx.TreeCtrl( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TR_DEFAULT_STYLE|wx.TR_HIDE_ROOT )
        self.root = self.tree.AddRoot('Noktalar')

        vbox.Add(self.tree, 1, wx.EXPAND)

        con = lite.connect('noktalar.sdb')
        #cur = con.cursor() #removed
        cur2 = con.cursor() #added

        gruplar=cur.execute("select * from gruplar")

        for grup in gruplar:
            parentItem = self.tree.AppendItem(self.root, grup[1])
            deyim="""select * from noktalar where noktalar.grup_id="""+str(grup[0])
            #noktalar=cur.execute(deyim) #removed
            noktalar=cur2.execute(deyim) #added
            for nokta in noktalar:
                self.tree.AppendItem(parentItem, nokta[1])

        con.commit()
        cur.close()
        cur2.close() #added
        con.close()

        self.SetSizer(vbox)
        self.Centre()




class MyApp(wx.App):
    def OnInit(self):
        frame = MyFrame(None, -1, 'treectrl.py')
        frame.Show(True)
        self.SetTopWindow(frame)
        return True

Привет,

Мне нужно построить treectrl из базы данных 1toN. Но выполняется только одна итерация. Я имею в виду, что в элементе управления есть только один родительский элемент и подэлементы внутри него. Почему он не создает другие родительские элементы, даже если они существуют в базе данных?

Заранее спасибо.

РЕШИТЬ:

Я добавил еще один курсор для "noktalar".

1 Ответ

0 голосов
/ 10 мая 2011

Вы уверены, что переменные gruplar и noktalar являются итеративными?Добавьте несколько строк для их печати и убедитесь, что вы что-то перебираете.В противном случае код выглядит мне правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...