Foros del Web » Programando para Internet » Python »

wx.ListCtrl.Append columnas vacias

Estas en el tema de wx.ListCtrl.Append columnas vacias en el foro de Python en Foros del Web. Estoy cargando los registros de una base de datos en un control wx.ListCtrl con la siguiente funcion: Código: def Load_from_list(self,list,preserve_list = False): self.DeleteAllColumns() self.DeleteAllItems() self.data.clear() ...
  #1 (permalink)  
Antiguo 04/01/2011, 12:27
 
Fecha de Ingreso: abril-2008
Mensajes: 68
Antigüedad: 16 años
Puntos: 0
wx.ListCtrl.Append columnas vacias

Estoy cargando los registros de una base de datos en un control wx.ListCtrl con la siguiente funcion:

Código:
    def Load_from_list(self,list,preserve_list = False):
        self.DeleteAllColumns()
        self.DeleteAllItems()
        self.data.clear()
        if not preserve_list:
            self.li = list           
        self.Insert_Columns(self.colums)
        for i,registro in enumerate(list):
            index = self.Append(registro)
            self.data[i]=registro
            self.SetItemData(index, index)
        self.itemDataMap = self.data
        listmix.ColumnSorterMixin.__init__(self, len(self.colums))
        
        for i,c in enumerate(self.colums):
            self.SetColumnWidth(i, wx.LIST_AUTOSIZE_USEHEADER)
En linux me carga todo correctamente, en windows la lista esta completa pero me deja columnas vacias, que puede ser?

la linea se carga de index = self.Append(registro)
  #2 (permalink)  
Antiguo 04/01/2011, 16:29
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: wx.ListCtrl.Append columnas vacias

Muestra una captura de pantalla, para ver qué es eso de que "deja columnas vacías"


Saludos.
  #3 (permalink)  
Antiguo 04/01/2011, 19:32
 
Fecha de Ingreso: abril-2008
Mensajes: 68
Antigüedad: 16 años
Puntos: 0
Respuesta: wx.ListCtrl.Append columnas vacias



me carga 2 linea completas y despues solo la primer columna...
  #4 (permalink)  
Antiguo 05/01/2011, 15:52
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: wx.ListCtrl.Append columnas vacias

Bien, queda claro.
Si en Linux todo funciona correctamente, no creo que sea un problema de código.
Si iniciás la aplicación desde la consola de python (o desde una línea de comandos) en Windows, ¿hay alguna excepción?

Sin saber qué tipo de objeto es "self", no hay mucho más que sugerir.


Saludos.
  #5 (permalink)  
Antiguo 07/01/2011, 14:21
 
Fecha de Ingreso: abril-2008
Mensajes: 68
Antigüedad: 16 años
Puntos: 0
Respuesta: wx.ListCtrl.Append columnas vacias

self es la clase que cree MyList que es un ListCtrl con columnSortenMixin, todavia no probe sacar el ordenamiento de columnas porque tambien observe que en linux me ordena-
1
2
3
11
22

y en windows
1
11
2
22
3

osea lo toma como string en windows....

Código:
class MyList(wx.ListCtrl, listmix.ColumnSorterMixin):
    def __init__(self, parent,style= wx.LC_REPORT
                                    | wx.BORDER_SIMPLE  
                                    | wx.LC_SORT_ASCENDING
                                    | wx.LC_SINGLE_SEL 
                                    | wx.LC_AUTOARRANGE):
        wx.ListCtrl.__init__(self,parent,style = style)
        
        self.myEVT_ITEMSEL = wx.NewEventType() 
        self.EVT_ITEMSEL = wx.PyEventBinder(self.myEVT_ITEMSEL, 1)
        self.il16 = Custom.Il_16(self)
        self.il = wx.ImageList(16, 16)
        self.sm_up = self.il.AddWithColourMask(self.il16.sm_up, "blue")
        self.sm_dn = self.il.AddWithColourMask(self.il16.sm_dw, "blue")
        self.AssignImageList(self.il, wx.IMAGE_LIST_SMALL)
        self.__Events__()

        self.data = {}        
        self.li = [] # Lista cargada actualmente
        self.colums= []
        self.conn = Conn.GestorBD()        
        
    def __Events__(self):
        self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnDoubleClick)
        self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnDoubleClick)
           
    # Used by the ColumnSorterMixin, see wx/lib/mixins/listctrl.py
    def GetListCtrl(self):
        return self
    def GetSortImages(self):
        return (self.sm_dn, self.sm_up)

    def OnDoubleClick(self, event):
        id = event.m_itemIndex
        id = self.GetItemText(id)    
        event = MyEvent(self.myEVT_ITEMSEL, self.GetId())
        event.SetMyVal(id) 
        self.GetEventHandler().ProcessEvent(event)

    def Insert_Columns(self,cols):
        for i,c in enumerate(cols):
            self.InsertColumn(i,c)
        
    def Load_from_sql(self,sql):
        resultado = self.conn.Query(sql,2)
        if not resultado == False:
            self.Load_from_list(resultado)
        
    def Load_from_list(self,list,preserve_list = False):
        self.DeleteAllColumns()
        self.DeleteAllItems()
        self.data.clear()
        if not preserve_list:
            self.li = list           
        self.Insert_Columns(self.colums)
        for i,registro in enumerate(list):
            index = self.Append(registro)
            self.data[i]=registro
            self.SetItemData(index, index)
        self.itemDataMap = self.data
        listmix.ColumnSorterMixin.__init__(self, len(self.colums))
        
        for i,c in enumerate(self.colums):
            self.SetColumnWidth(i, wx.LIST_AUTOSIZE_USEHEADER)
            
    def filter(self, st,col=None):
        newli = []
        if not st:
            self.Load_from_list(self.li,True)
            return
        st = st.lower()
        for reg in self.li:
            if col == None:
                for r in reg:
                    if st in str(r).lower():newli.append(reg)
            else:
                if st in str(reg[col]).lower():newli.append(reg)
        self.Load_from_list(newli,True)
  #6 (permalink)  
Antiguo 08/01/2011, 18:52
 
Fecha de Ingreso: abril-2008
Mensajes: 68
Antigüedad: 16 años
Puntos: 0
Respuesta: wx.ListCtrl.Append columnas vacias

Esta solucionado, el problema era que tenia el estilo wx.LC_SORT_ASCENDING y no se porque reacionaba de esa manera... sera un bug no lo se.

Etiquetas: columnas, vacias
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 03:26.