Gibt es eine Möglichkeit, die Bearbeitung bestimmter Zellen durch den Benutzer zu deaktivieren, wenn ListCtrl
mit TextEditMixin
verwendet wird?
Ich denke, es gibt eine Möglichkeit, dass Vetos das Bearbeitungsereignis, aber ich kann es nicht finden.
3 Antworten
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()
In wxPython Version 4.0.0 lautet die Zeile:
if event.m_col == 1
funktioniert nicht. Verwenden
if event.GetColumn() == 1
Stattdessen.
Soweit ich mich erinnere, müssen Sie an EVT_LIST_BEGIN_LABEL_EDIT binden. Dann überprüfen Sie in Ihrem Event-Handler einfach, in welcher Spalte Sie sich befinden. Wenn Sie sich in einer Spalte befinden, die bearbeitet werden soll, führen Sie "event.Allow ()" aus, andernfalls legen Sie ein Veto ein.
Verwandte Fragen
Neue Fragen
python
Python ist eine dynamisch typisierte Mehrzweck-Programmiersprache mit mehreren Paradigmen. Es wurde entwickelt, um schnell zu lernen, zu verstehen, zu verwenden und eine saubere und einheitliche Syntax durchzusetzen. Bitte beachten Sie, dass Python 2 ab dem 01.01.2020 offiziell nicht mehr unterstützt wird. Fügen Sie für versionenspezifische Python-Fragen das Tag [python-2.7] oder [python-3.x] hinzu. Wenn Sie eine Python-Variante (z. B. Jython, PyPy) oder eine Bibliothek (z. B. Pandas und NumPy) verwenden, fügen Sie diese bitte in die Tags ein.