2012-10-09 13 views

risposta

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

Se non ricordo male, si deve associare a EVT_LIST_BEGIN_LABEL_EDIT. Quindi nel gestore dell'evento devi solo controllare in quale colonna sei inserito e se sei in una colonna che vuoi essere modificabile, allora fai "event.Allow()", altrimenti fai il veto.

+0

Qual è la differenza tra 'evt.Veto()' e 'evt.Allow()'? – lolopop

+0

uh, Veto impedisce all'evento di risalire la catena di eventi mentre Consenti continuiamo. Ora, una domanda migliore è qual è la differenza tra Allow e Skip? Che non ne sono sicuro ... –

+0

Oh mio errore è quello che volevo chiedere :) da http://xoomer.virgilio.it/infinity77/Phoenix/ 'Allow' is" Questo è l'opposto di Veto: esplicitamente consente di elaborare l'evento. " e "Salta" è "Questo metodo può essere utilizzato all'interno di un gestore di eventi per controllare se ulteriori gestori di eventi legati a questo evento verranno chiamati dopo che viene restituito quello corrente.", non sembra una differenza tranne che Allow è disponibile solo su I bambini di NotifyEvent ... – lolopop

1

Nella versione 4.0.0 wxPython la linea:

if event.m_col == 1 non funziona. Utilizzare

if event.GetColumn() == 1

invece.

Problemi correlati