wx.lib.agw.ultimatelistctrl。禁止增加元素的高度

wx.lib.agw.ultimatelistctrl. Prohibit increasing the height of the element

有一个对象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)

此列表包含六列。最后一栏“评论”。由于 This object 不允许直接编辑第 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.TextCtrl 对象包含了 wx.TE_MULTILINE 样式。但是当我在列表单元格中插入多行文本时,这个单元格会增加它的大小:元素高度=文本中的行数。

当然看起来很糟糕:

我可以通过某种方式禁止它(增加高度)吗?

我可能误解了你的问题,但你为什么不简单地替换对话框结果中的所有换行符。
沿着这些线的东西:

def OnButtonComment(self,event):
    dlg = wx.TextEntryDialog(self, "Comment", caption="Input Data",
            value="", style=wx.OK|wx.CANCEL|wx.TE_MULTILINE)
    dlg.ShowModal()
    txt = dlg.GetValue()
    txt = txt.replace('\n',' ')
    self.list.SetStringItem(self.index, 1, txt)