Foros del Web » Programando para Internet » Python »

TreeItemData

Estas en el tema de TreeItemData en el foro de Python en Foros del Web. Hola de nuevo, estoy muy molesto ya, estoy agregando nodos a un treeview de la siguiente manera: Código: nodo = frame_1.tree.AppendItem(parent,string) Pero el string puede ...
  #1 (permalink)  
Antiguo 26/01/2010, 18:08
 
Fecha de Ingreso: abril-2008
Mensajes: 68
Antigüedad: 16 años
Puntos: 0
TreeItemData

Hola de nuevo, estoy muy molesto ya, estoy agregando nodos a un treeview de la siguiente manera:
Código:
nodo = frame_1.tree.AppendItem(parent,string)
Pero el string puede repetirse.... y al hacer doble click, necesito evaluar cual nodo fue clickeado, al ver las propiedades del metodo AppendItem veo que tiene TreeItemData, trato de pasarle un valor numerico pero me da un error... como puedo asignarle un id, a cada nodo?

Código:
AppendItem(self, TreeItemId parent, String text, int 
 image=-1, int selectedImage=-1, 
    TreeItemData data=None) -> TreeItemId
Otra consulta:
Para agregar imagenes, hay algo parecido a un imagelist, o me conviene agregarlas directamente desde una ruta... ejemplo "...//Recursos//Icons//1.ico"?

Saludos
Y gracias de antemano
  #2 (permalink)  
Antiguo 27/01/2010, 10:30
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: TreeItemData

Puedes guardar los TreeItemId en una lista. Para saber cual fue, ejemplo:
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.IdNodes = [self.root]
  22.         self.AddTreeNodes(self.root, self.branches) #Metodo de clase
  23.  
  24.         # Expandimos el primer nivel
  25.         self.tree.Expand(self.root)
  26.  
  27.         self.tree.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnDoubleClick)
  28.         #self.tree.Bind(wx.EVT_TREE_KEY_DOWN, self.OnEnter)
  29.  
  30.     def OnDoubleClick(self, event):
  31.         print self.tree.GetItemText(event.GetItem()),
  32.         print self.IdNodes.index(event.GetItem())
  33.  
  34.     def AddTreeNodes(self, root, items):
  35.         for item in items:
  36.             if type(item) == str:
  37.                 newItem = self.tree.AppendItem(root, item)
  38.                 self.IdNodes.append(newItem)
  39.             else:
  40.                 newItem = self.tree.AppendItem(root, item[0])
  41.                 self.IdNodes.append(newItem)
  42.                 self.AddTreeNodes(newItem, item[1])
  43.  
  44. app = wx.PySimpleApp()
  45. frame = TestFrame()
  46. frame.Show()
  47. app.MainLoop()

Cita:
Para agregar imagenes, hay algo parecido a un imagelist, o me conviene agregarlas directamente desde una ruta... ejemplo "...//Recursos//Icons//1.ico"?
No tengo idea de que sea un imagelist (no trabajo con visual studio).
En cuanto a las rutas se recomienda usar rutas absolutas.
  #3 (permalink)  
Antiguo 27/01/2010, 21:44
 
Fecha de Ingreso: abril-2008
Mensajes: 68
Antigüedad: 16 años
Puntos: 0
Respuesta: TreeItemData

Gracias razpeitia...
pense que se podia con el mismo control...

Etiquetas: Ninguno
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 09:35.