Foros del Web » Programando para Internet » Python »

wxpyhon wx.ListCtrl Selected Row

Estas en el tema de wxpyhon wx.ListCtrl Selected Row en el foro de Python en Foros del Web. Hola a Tod@s Estoy haciendo una pequeña aplicación con wxpyhon y un wx.ListCtrl "style=wx.LC_REPORT", he puesto unos botones de control para desplazarse wx.ListCtrl El problema ...
  #1 (permalink)  
Antiguo 17/06/2012, 05:25
 
Fecha de Ingreso: enero-2011
Mensajes: 17
Antigüedad: 13 años, 9 meses
Puntos: 2
wxpyhon wx.ListCtrl Selected Row

Hola a Tod@s

Estoy haciendo una pequeña aplicación con wxpyhon y un wx.ListCtrl "style=wx.LC_REPORT", he puesto unos botones de control para desplazarse wx.ListCtrl

El problema que tengo es que quiero seleccionar la fila como si se fuera con el raton.

En canvio cuando lo ago por programación con "SetItemState(0, wx.LIST_STATE_SELECTED, wx.LIST_STATE_SELECTED)" se queda seleccionada en un gris claro y querría que se quedara en azul.
He probado de poner el foco en el widget pero creo que me falta algo mas.

también me valdría cambiar el color gris por defecto por el azul.

Salutaciones y Gracias

.
  #2 (permalink)  
Antiguo 18/06/2012, 08:22
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: wxpyhon wx.ListCtrl Selected Row

Bueno en linux me funciona bien. Y dado que no pusiste mas que una triste linea de código hice lo siguiente.

Copie un ejemplo de esta pagina.

Cheque la documentación.

Modifique un poco el código de ejemplo y esto fue lo que me quedo.

Código Python:
Ver original
  1. import wx
  2.  
  3. ########################################################################
  4. class MyForm(wx.Frame):
  5.  
  6.     #----------------------------------------------------------------------
  7.     def __init__(self):
  8.         wx.Frame.__init__(self, None, wx.ID_ANY, "List Control Tutorial")
  9.  
  10.         # Add a panel so it looks the correct on all platforms
  11.         panel = wx.Panel(self, wx.ID_ANY)
  12.         self.index = 0
  13.  
  14.         self.list_ctrl = wx.ListCtrl(panel, size=(-1,100),
  15.                          style=wx.LC_REPORT
  16.                          |wx.BORDER_SUNKEN
  17.                          )
  18.         self.list_ctrl.InsertColumn(0, 'Subject')
  19.         self.list_ctrl.InsertColumn(1, 'Due')
  20.         self.list_ctrl.InsertColumn(2, 'Location', width=125)
  21.  
  22.         btn = wx.Button(panel, label="Add Line")
  23.         btn.Bind(wx.EVT_BUTTON, self.add_line)
  24.  
  25.         sizer = wx.BoxSizer(wx.VERTICAL)
  26.         sizer.Add(self.list_ctrl, 0, wx.ALL|wx.EXPAND, 5)
  27.         sizer.Add(btn, 0, wx.ALL|wx.CENTER, 5)
  28.         panel.SetSizer(sizer)
  29.  
  30.     #----------------------------------------------------------------------
  31.     def add_line(self, event):
  32.         line = "Line %s" % self.index
  33.         self.list_ctrl.InsertStringItem(self.index, line)
  34.         self.list_ctrl.SetStringItem(self.index, 1, "01/19/2010")
  35.         self.list_ctrl.SetStringItem(self.index, 2, "USA")
  36.         self.list_ctrl.Select(self.index)
  37.         self.index += 1
  38.  
  39. #----------------------------------------------------------------------
  40. # Run the program
  41. if __name__ == "__main__":
  42.     app = wx.App(False)
  43.     frame = MyForm()
  44.     frame.Show()
  45.     app.MainLoop()

¿Esto es mas o menos lo que quieres? Si no es así por favor pon mas código y plantea mejor la pregunta.
  #3 (permalink)  
Antiguo 18/06/2012, 10:31
 
Fecha de Ingreso: enero-2011
Mensajes: 17
Antigüedad: 13 años, 9 meses
Puntos: 2
Respuesta: wxpyhon wx.ListCtrl Selected Row

Hola razpeitia

Perdón por ser tan escueto y gracias por responder.

En Windows no se ve correctamente se be en gris

https://www.dropbox.com/s/slgceemksncn182/01.jpg


Yo querría que se viera así.

https://www.dropbox.com/s/wd2jshkfc16k10e/02.jpg


Supongo que no debe estar implementado correctamente wxpython para Windows
En VB6 que había tocado algo tiempo atrás creo que para hacer lo mismo se tenia de poner el witget en activo i con el foco (o algo así). También lo he probado poniendo el foco pero tampoco funciona.


Sabes si se puede cambiar el color por defecto?

P.D Ya había mirado la documtecion pero como soy novatillo no se si lo hacia bien o si me se escavaba algo.

Última edición por serrallonga25; 18/06/2012 a las 10:38
  #4 (permalink)  
Antiguo 24/06/2012, 05:46
 
Fecha de Ingreso: enero-2011
Mensajes: 17
Antigüedad: 13 años, 9 meses
Puntos: 2
Respuesta: wxpyhon wx.ListCtrl Selected Row

Hola

Ya encontré la solución.

Se le ha de poner el foco al listctrl después de seleccionar.

Código Python:
Ver original
  1. def add_line(self, event):
  2.         line = "Line %s" % self.index
  3.         self.list_ctrl.InsertStringItem(self.index, line)
  4.         self.list_ctrl.SetStringItem(self.index, 1, "01/19/2010")
  5.         self.list_ctrl.SetStringItem(self.index, 2, "USA")
  6.         self.list_ctrl.Select(self.index)
  7.         self.list_ctrl.SetFocus()

Gracias por todo

Etiquetas: wx.listctrl, wxpyhon
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 15:55.