Я пытаюсь создать прототип приложения, которое состоит из таблицы
данных, связанных с графиком, который будет отображаться рядом с таблицей
и обновляется при изменении данных.
Для таблицы я использую объект, производный от ListCtrl и, потому что я хочу
чтобы иметь возможность редактировать данные на месте, я также наследую
Класс TextEditMixin:
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)
Я хочу, чтобы мои внутренние данные были отделены от их отображения, поэтому мой
wx.Frame
-приобретенный объект имеет объект источника данных, из которого он читает
данные для заполнения ListCtrl.
self.list = EditableListCtrl(panel, style=wx.LC_REPORT)
self.list.InsertColumn(0, 'A', width=140)
self.list.InsertColumn(1, 'B', width=130)
for i in range(0, self.db.getNumRecords()):
item = self.db.getRecord(i)
index = self.list.InsertStringItem(sys.maxint, str(item[0]))
self.list.SetStringItem(index, 1, str(item[1]))
Поскольку теперь у меня есть две копии данных, я бы хотел сделать
убедитесь, что источник данных обновляется всякий раз, когда ListCtrl
отредактировано пользователем.
Есть ли стандартный способ сделать это?
Я попытался привязаться к событию EVT_LIST_ITEM_DESELECTED, но оно
срабатывает до того, как функция TextEditMixin изменит данные в
ListCtrl - данные, полученные из ListCtrl с помощью обратного вызова
функция старых данных.