Foros del Web » Programando para Internet » Python »

Crear eventos ¿?

Estas en el tema de Crear eventos ¿? en el foro de Python en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 23/01/2010, 09:56
 
Fecha de Ingreso: abril-2008
Mensajes: 68
Antigüedad: 16 años, 8 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
  #2 (permalink)  
Antiguo 23/01/2010, 13:57
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: Crear eventos ¿?

Para eso existe el evento EVT_TREE_ITEM_ACTIVATED

Un ejemplo de su uso
Código Python:
Ver original
  1. #coding: utf-8
  2. import wx
  3.  
  4. class TestFrame(wx.Frame):
  5.     def __init__(self):
  6.         wx.Frame.__init__(self, None, title="Tree", size=(400,500))
  7.  
  8.         # Creamos el tree
  9.         self.tree = wx.TreeCtrl(self)
  10.  
  11.         # Añadimos una raiz
  12.         self.root = self.tree.AddRoot("Raiz")
  13.        
  14.         # Añadimos ramas (o nodos) a nuestra raiz
  15.         self.branches = [
  16.                     ["Rama1",
  17.                         ["SubRama1EnRama1", "SubRama2EnRama1"]],
  18.                     ["Rama2",
  19.                         ["SubRama1EnRama2", "SubRama2EnRama2"]]
  20.                    ]
  21.         self.AddTreeNodes(self.root, self.branches) #Metodo de clase
  22.  
  23.         # Expandimos el primer nivel
  24.         self.tree.Expand(self.root)
  25.  
  26.         self.tree.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnDoubleClick)
  27.         #self.tree.Bind(wx.EVT_TREE_KEY_DOWN, self.OnEnter)
  28.  
  29.     def OnDoubleClick(self, event):
  30.         print self.tree.GetItemText(event.GetItem())
  31.  
  32.     def AddTreeNodes(self, root, items):
  33.         for item in items:
  34.             if type(item) == str:
  35.                 self.tree.AppendItem(root, item)
  36.             else:
  37.                 newItem = self.tree.AppendItem(root, item[0])
  38.                 self.AddTreeNodes(newItem, item[1])
  39.  
  40. app = wx.PySimpleApp()
  41. frame = TestFrame()
  42. frame.Show()
  43. app.MainLoop()
  #3 (permalink)  
Antiguo 23/01/2010, 15:43
 
Fecha de Ingreso: abril-2008
Mensajes: 68
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Crear eventos ¿?

gracias razpetia, me estas enseñando a usar python

Etiquetas: eventos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:07.