2012-10-09 2 views

Antwort

10

Ereignis 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

Soweit ich mich erinnere, müssen Sie EVT_LIST_BEGIN_LABEL_EDIT binden. Dann überprüfen Sie in Ihrem Event-Handler einfach, in welcher Spalte Sie sich befinden, und wenn Sie sich in einer Spalte befinden, die bearbeitet werden soll, dann tun Sie "event.Allow()", sonst haben Sie ein Veto eingelegt.

+0

Was ist der Unterschied zwischen 'evt.Veto()' und 'evt.Allow()'? – lolopop

+0

uh, Veto verhindert, dass das Ereignis die Event-Kette durchläuft, während Erlauben, dass es weitergeht. Nun, eine bessere Frage ist, was ist der Unterschied zwischen zulassen und überspringen? Das bin ich mir nicht sicher über ... –

+0

Oh mein Fehler, das ist was ich fragen wollte :) von http://xoomer.virgilio.it/infinity77/Phoenix/ 'Erlauben' ist" Das ist das Gegenteil von Veto: es explizit ermöglicht die Verarbeitung des Ereignisses. " und "Überspringen" ist "Diese Methode kann in einem Ereignishandler verwendet werden, um zu steuern, ob weitere Ereignisbehandlungsroutinen, die an dieses Ereignis gebunden sind, aufgerufen werden, nachdem das aktuelle zurückkehrt.", scheint jedoch nur ein Unterschied zu sein NotifyEvents Kinder ... – lolopop

1

In wxPython Version 4.0.0 die Zeile:

if event.m_col == 1 funktioniert nicht. Verwenden

if event.GetColumn() == 1

statt.

Verwandte Themen