Bueno lo que quiero hacer es empezar a portar un proyecto de VB 6.0 a python....
Empese por el form principal, quiero popular un treeview con la funcion AgregaFO
abre un cursor y agrega de forma recursiva... en python vi como agregar nodos dentro de la clase pero como puedo hacerlo por fuera de la clase
def AgregaFO(parent,chield):
cursor = mdDB.conn.cursor()
sql="Select Id,Nombre From SM_FO where parent ='%s'" % parent
cursor.execute(sql)
resultado=cursor.fetchall()
for registro in resultado:
if chield == "0":
print registro[0],"-->",registro[1] #---> aca en vez de imprimir deberia crear un nodo
else:
print "\t",registro[0],"-->",registro[1] ///----> aca un nodo hijo del parent anterior, en vb creo una variable nodo y asigno en cada bucle el nodo hago nodo.add nodonuevo///
AgregaFO(registro[0],"1")
Código:
import wx
import mdDB
class frm_main(wx.Frame):
def __init__(self, *args, **kwds):
kwds["style"] = wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
self.window_1 = wx.SplitterWindow(self, -1, style=wx.SP_3D|wx.SP_BORDER)
self.window_1_pane_1 = wx.Panel(self.window_1, -1)
self.tree = wx.TreeCtrl(self.window_1_pane_1, -1, style=wx.TR_HAS_BUTTONS|wx.TR_DEFAULT_STYLE)
self.window_1_pane_2 = wx.Panel(self.window_1, -1)
self.frame_1_statusbar = self.CreateStatusBar(1, 0)
# Tool Bar
self.frame_1_toolbar = wx.ToolBar(self, -1)
self.SetToolBar(self.frame_1_toolbar)
# Tool Bar end
# Menu Bar
self.frame_1_menubar = wx.MenuBar()
self.SetMenuBar(self.frame_1_menubar)
# Menu Bar end
self.__set_properties()
self.__do_layout()
# end wxGlade
def __set_properties(self):
self.SetTitle("SM ERP")
_icon = wx.EmptyIcon()
_icon.CopyFromBitmap(wx.Bitmap("C:\\Documents and Settings\\podio\\Escritorio\\MARIANO\\SM_ERP-local\\version mariano\\recursos\\16 x 16\\update.ico", wx.BITMAP_TYPE_ANY))
self.SetIcon(_icon)
self.frame_1_statusbar.SetStatusWidths([-1])
# statusbar fields
frame_1_statusbar_fields = ["frame_1_statusbar"]
for i in range(len(frame_1_statusbar_fields)):
self.frame_1_statusbar.SetStatusText(frame_1_statusbar_fields[i], i)
self.frame_1_toolbar.Realize()
def __do_layout(self):
sizer_1 = wx.GridSizer(1, 1, 0, 0)
sizer_2 = wx.BoxSizer(wx.HORIZONTAL)
sizer_2.Add(self.tree, 1, wx.EXPAND, 0)
self.window_1_pane_1.SetSizer(sizer_2)
self.window_1.SplitVertically(self.window_1_pane_1, self.window_1_pane_2)
sizer_1.Add(self.window_1, 1, wx.EXPAND, 0)
self.SetSizer(sizer_1)
sizer_1.Fit(self)
self.Layout()
self.Centre()
# end wxGlade
# end of class frm_main
def AgregaFO(parent,chield):
cursor = mdDB.conn.cursor()
sql="Select Id,Nombre From SM_FO where parent ='%s'" % parent
cursor.execute(sql)
resultado=cursor.fetchall()
for registro in resultado:
if chield == "0":
print registro[0],"-->",registro[1]
else:
print "\t",registro[0],"-->",registro[1]
AgregaFO(registro[0],"1")
if __name__ == "__main__":
app = wx.PySimpleApp(0)
wx.InitAllImageHandlers()
frame_1 = frm_main(None, -1, "")
app.SetTopWindow(frame_1)
AgregaFO("0","0")
frame_1.Show()
app.MainLoop()
(edit)
en el modulo mdDB solo esta la conecion a la db y la variable conn que seria la conecion... una pregunta cada vez que importe este modulo desde otro modulo, se crea una conecion nueva?