2012-10-09 70 views

回答

10

事件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

我記得,你必須綁定到EVT_LIST_BEGIN_LABEL_EDIT。然後在你的事件處理程序中,你只需檢查你所在的列,並且如果你在一個你想要編輯的列中,那麼你做「event.Allow()」,否則你否決。

+0

什麼'evt.Veto()'和'evt.Allow()'之間的區別? – lolopop

+0

呃,否決權停止事件上去的事件鏈,而讓讓我們繼續前進。現在,更好的問題是Allow和Skip之間有什麼區別?那我不知道...... –

+0

噢,我的錯誤,這就是我要問:)從http://xoomer.virgilio.it/infinity77/Phoenix/'Allow'是「這是否決權相反:它明確允許事件被處理。「和'Skip'是「這個方法可以在事件處理程序中使用,以控制綁定到這個事件的更多事件處理程序是否會在當前事件處理程序返回後調用。」,除了Allow僅在NotifyEvent的孩子們...... – lolopop

1

在wxPython版本4.0.0行:

if event.m_col == 1 不起作用。使用

if event.GetColumn() == 1

代替。

相關問題