7
votes

Wx.ListCtrl avec TextEditMixin - Désactiver l'édition de cellules sélectionnées

existe-t-il un moyen de désactiver l'édition de cellules spécifiques par l'utilisateur lors de l'utilisation de listCtrl avec texteDitMixin ?

Je suppose qu'il y a une manière qui vetos l'événement d'édition, mais je ne peux pas le trouver.


0 commentaires

3 Réponses :


12
votes

événement 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()


0 commentaires

1
votes

Comme je me souviens, vous devez vous attacher à EvT_List_BEGIN_LABEL_EDIT. Ensuite, dans votre gestionnaire d'événements, vous venez de vérifier quelle colonne vous trouvez et si vous êtes dans une colonne que vous souhaitez être modifiable, alors vous faites "event.allow ()", sinon vous Veto.



2
votes

dans WXPYTHON Version 4.0.0 La ligne:

si event.m_col == 1 ne marche pas. Utiliser

si event.getcolumn () == 1

à la place.


0 commentaires