Существует объект UltimateListCtrl
from wx.lib.agw import ultimatelistctrl as ULC
self._ulc_graphs = ULC.UltimateListCtrl(self, size = (-1, 150),
agwStyle=wx.LC_REPORT|wx.LC_VRULES|wx.LC_HRULES|ULC.ULC_HAS_VARIABLE_ROW_HEIGHT|ULC.ULC_SINGLE_SEL)
Этот список содержит шесть столбцов.Последний столбец «Комментарий».Поскольку этот объект не разрешает прямое редактирование значения элемента в n-м столбце (редактировать можно только 0-й столбец).Было решено вставить кнопку в каждый ряд последнего столбца, щелкнув по которому вылетает диалог с помощью wx.TextCtrl.Пользователь вводит там комментарий, нажимает кнопку ОК, и текст комментария вводится в последний столбец n-го элемента списка.5-й столбец (если с 0):
self._ulc_graphs.InsertColumn(5, 'Комментарий', ULC.ULC_FORMAT_CENTER, 100)
# in the loop I add rows to the list
self._ulc_graphs.SetStringItem (self._ulc_graphs_index, 5, '')
button_comment = wx.Button(self._ulc_graphs, -1, '...', size=(23, 23))
self._ulc_graphs.SetItemWindow(self._ulc_graphs_index, 5, button_comment, False)
button_comment.Bind(wx.EVT_BUTTON, self.OnButtonComment)
self._ulcItem_btn[self._ulc_graphs_index] = button_comment
Результат:
Конечно, вынуждая пользователя писать текст водин ряд - плохая идея.Поэтому я включил стиль wx.TE_MULTILINE для объекта wx.TextCtrl.Но когда я вставляю многострочный текст в ячейку списка, эта ячейка увеличивает свой размер: высота элемента = количество строк в тексте.
Конечно, выглядит ужасно:
Можно ли как-то забанить (увеличение высоты)?