2012-10-09 7 views

cevap

10

Olay wx.EVT_LIST_BEGIN_LABEL_EDIT: Hatırladığım kadarıyla

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

, sen EVT_LIST_BEGIN_LABEL_EDIT bağlamak zorundayız. Daha sonra etkinlik işleyicinizde, hangi sütunun bulunduğunu ve düzenlenebilir olmasını istediğiniz bir sütundaysanız, "event.Allow()" ifadesini görürsünüz, aksi halde veto edersiniz.

if event.m_col == 1

çalışmaz: wxPython versiyonda

+0

Evt.Veto() ve 'evt.Allow()' arasındaki fark nedir? – lolopop

+0

uh, Veto, etkinliğin etkinlik zincirine gitmesini durdurur, Buna izin ver, devam etmesine izin ver. Şimdi, daha iyi bir soru, İzin Ver ve Atla arasındaki fark nedir? Hakkında emin değilim ... –

+0

Oh benim hatam, sormak istediğim buydu :) http://xoomer.virgilio.it/infinity77/Phoenix/ 'Allow', 'Bu Veto'nun tam tersidir: açıkça olayın işlenmesini sağlar. " ve "Atla", "Bu yöntem, bu olayla ilişkili diğer olay işleyicilerinin, geçerli olanın döndürülmesinden sonra çağrılacağını kontrol etmek için bir olay işleyicisinin içinde kullanılabilir.", İzin verenin yalnızca kullanılabilir olduğu dışında bir fark gibi görünmüyor. NotifyEvent'in çocukları ... – lolopop

1

hattını 4.0.0. yerine

if event.GetColumn() == 1

kullanın.

İlgili konular