este es el codigo de mi frame
lo que busco es crear un evento cuando se hace doble click con el boton izquierdo del mouse o se presiona entrer sobre un nodo del tree.
que imprima que asigne el nombre a una variable cualquier cosa, quiero ver como se haria y despues lo adapto, en realidad cada nodo abre un formulario diferente, osea una clase.
Código:
el resultado:import wx import md.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_HIDE_ROOT|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, style=wx.TB_HORIZONTAL|wx.TB_3DBUTTONS|wx.TB_TEXT) self.SetToolBar(self.frame_1_toolbar) self.frame_1_toolbar.AddLabelTool(1, "Config", wx.Bitmap("C:\\Documents and Settings\\podio\\Escritorio\\MARIANO\\fugue-icons-2.0\\icon\\address-book-open.png", wx.BITMAP_TYPE_ANY), wx.NullBitmap, wx.ITEM_NORMAL, "", "") # 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 # class Tnodo (object): instance = None def __new__(cls, *args, **kargs): if cls.instance is None: cls.instance = object.__new__(cls, *args, **kargs) return cls.instance def AgregaFO(parent,chield,nod): nodo = Tnodo() conn = md.mdDB.GestorBD() sql="Select Id,Nombre From SM_FO where parent ='%s'" % parent resultado= conn.execute(sql) for registro in resultado: if chield == "0": nodo = frame_1.tree.AppendItem(root,registro[1]) else: nodo = frame_1.tree.AppendItem(nod,registro[1]) AgregaFO(registro[0],"1",nodo) def Show(): global frame_1,root app = wx.PySimpleApp(0) wx.InitAllImageHandlers() frame_1 = frm_main(None, -1, "") app.SetTopWindow(frame_1) root = frame_1.tree.AddRoot('root') frame_1.tree.SetItemHasChildren(root) AgregaFO("0","0",root) frame_1.Show() app.MainLoop()
saludos