2012-10-09 28 views

Respuesta

10

Evento wx.EVT_LIST_BEGIN_LABEL_EDIT:

class EditableListCtrl(wx.ListCtrl, listmix.TextEditMixin): 
    def __init__(self, parent, ID=wx.ID_ANY, pos=wx.DefaultPosition, 
       size=wx.DefaultSize, style=0): 
     wx.ListCtrl.__init__(self, parent, ID, pos, size, style) 
     listmix.TextEditMixin.__init__(self) 
     self.Bind(wx.EVT_LIST_BEGIN_LABEL_EDIT, self.OnBeginLabelEdit) 

    def OnBeginLabelEdit(self, event): 
     if event.m_col == 1: 
      event.Veto() 
     else: 
      event.Skip() 
1

Según recuerdo, usted tiene que unirse a EVT_LIST_BEGIN_LABEL_EDIT. Luego, en el controlador de eventos, solo verifica en qué columna te encuentras y si estás en una columna que quieres que se pueda editar, entonces haz "event.Allow()", de lo contrario, vetarás.

+0

¿Cuál es la diferencia entre 'evt.Veto()' y 'evt.Allow()'? – lolopop

+0

eh, Veto detiene el evento para que no suba la cadena de eventos mientras que Allow lo permite. Ahora, una mejor pregunta es ¿cuál es la diferencia entre Permitir y Omitir? De lo que no estoy seguro es de ... –

+0

Oh mi error eso es lo que quería preguntar :) de http://xoomer.virgilio.it/infinity77/Phoenix/ 'Permitir' es" Esto es lo opuesto a Veto: explícitamente permite que el evento sea procesado ". y 'Omitir' es "Este método se puede usar dentro de un controlador de eventos para controlar si se llamarán más controladores de eventos vinculados a este evento después de que vuelva el actual.", no parece una diferencia, excepto que Permitir solo está disponible en Los hijos de NotifyEvent ... – lolopop

1

En la versión 4.0.0 wxPython la línea:

if event.m_col == 1 no funciona. Utilice

if event.GetColumn() == 1

lugar.

Cuestiones relacionadas