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