23/01/2010, 09:56
|
| | Fecha de Ingreso: abril-2008
Mensajes: 68
Antigüedad: 16 años, 7 meses Puntos: 0 | |
Crear eventos ¿? bueno la verdad es que ya estoy preguntando todo! pero no me funciona... estoy perdido en python...
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:
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()
el resultado:
saludos |