wxPython ListCtrl:写入彩色文本

发布于 2024-12-09 23:59:07 字数 880 浏览 1 评论 0原文

尝试将字符串写入 ListCtrl ,我完全不理解逻辑。这是正确的方法吗?

    self.rightPanel = wx.ListCtrl(spliter, -1, style=wx.LC_REPORT)
    self.rightPanel.InsertColumn(0, 'LineNumber')
    self.rightPanel.InsertColumn(1, 'log')
    self.rightPanel.SetColumnWidth(0, 8)
    self.rightPanel.SetColumnWidth(1, 80)

def writeConsole(self,str):
    item = wx.ListItem()
    item.SetText(str)
    item.SetTextColour(wx.RED)
    item.SetBackgroundColour(wx.BLACK)                    
    index = self.rightPanel.GetItemCount()        
    self.rightPanel.InsertItem(item)
    self.rightPanel.SetStringItem(index, 0, str(index))
    self.rightPanel.SetStringItem(index, 1, item.GetText())

1-为什么文本不以颜色显示?
2-为什么ListCtrl中有2种不同的显示文本的方法?

   ListCtrl.InsertItem()
   ListCtrl.SetStringItem()

我认为 InsertItem 只是将项目加载到 list.SetString 但显示项目内容。(不确定)

Trying to write string to a ListCtrl , I don't understand the logic completely. Is this the proper way?

    self.rightPanel = wx.ListCtrl(spliter, -1, style=wx.LC_REPORT)
    self.rightPanel.InsertColumn(0, 'LineNumber')
    self.rightPanel.InsertColumn(1, 'log')
    self.rightPanel.SetColumnWidth(0, 8)
    self.rightPanel.SetColumnWidth(1, 80)

def writeConsole(self,str):
    item = wx.ListItem()
    item.SetText(str)
    item.SetTextColour(wx.RED)
    item.SetBackgroundColour(wx.BLACK)                    
    index = self.rightPanel.GetItemCount()        
    self.rightPanel.InsertItem(item)
    self.rightPanel.SetStringItem(index, 0, str(index))
    self.rightPanel.SetStringItem(index, 1, item.GetText())

1-Why text is not displayed in color ?
2-Why there are 2 different methods for display text in ListCtrl?

   ListCtrl.InsertItem()
   ListCtrl.SetStringItem()

I think InsertItem just loads the item to list.SetString but displays the item content.(Not Sure)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

苦妄 2024-12-16 23:59:07

SetTextColour()SetBackgroundColour() 是整个 listctrl 的方法,而不是项目的方法。
对于您应该使用的项目(仅对报告模式有效):

GetItemTextColour(idx_item)
SetItemTextColour(idx_item, col)

InsertItem(index, item) (此处的 item 是 wx.ListItem 的实例)是 >InsertItem() 方法在 ListCtrl 上添加新行。

SetStringItem(index, col, label, imageId=-1)(其中index和col参数是单元格的行索引和列索引)允许在任何选定的列中设置字符串。其他插入方法仅适用于第一列。

参考: wxPython in Action,Noel Rappin 和 Robin Dunn。

SetTextColour() and SetBackgroundColour() are methods of the entire listctrl, not of items.
For items you should use (valid only for report mode):

GetItemTextColour(idx_item)
SetItemTextColour(idx_item, col)

InsertItem(index, item) (item here is an instance of wx.ListItem) is one of the InsertItem() methods to add a new row on a ListCtrl.

SetStringItem(index, col, label, imageId=-1) (where index and col parameters are the row and column indexes for a cell) allows setting strings in any selected column. Other insert methods work only for the first column.

Reference: wxPython in Action, Noel Rappin and Robin Dunn.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文