2024-04-24 09:08:22 发布
网友
我用的是wxpython的CustumTreeCtrl。由于我的树层次结构中的一些项应该具有不同的textcolors,所以如果这些项在被选中时也保持其textcolors,这将非常有用。但是,当文本的颜色被选择为蓝色时(背景颜色也可以被自动更改为蓝色)。但我不想它变成白色。有没有一种方法可以在选定状态下更改项目的文本颜色?SetItemTextColour()只为未选择的项目设置文本颜色。。。在
干杯。在
尝试the latest code from SVN-它可能已修复。在
你在Mac电脑上吗?我在PaintItem方法中找到了以下代码:
if wx.Platform == "__WXMAC__" and item.IsSelected() and self._hasFocus: dc.SetTextForeground(wx.WHITE) dc.DrawLabel(item.GetText(), textrect)
我不能确定其他平台,但它似乎使用了系统默认值。在
所以看起来唯一要做的就是修改类以添加一个内部高亮前景颜色,或者将其子类化并重写OnPaintItem方法(不幸的是,使用了大量的copy-pasta)。在
编辑
一个快速的方法是将此添加到__init__方法中:
__init__
然后在OnPaintItem方法中,将在方法末尾的dc.DrawLabel调用之前立即添加以下代码:
OnPaintItem
dc.DrawLabel
dc.SetTextForeground(self.highlight_fgc)
最后,在您自己的代码中,您将设置高亮前景颜色:
self.tree.highlight_fgc = wx.RED # etc...
或者,如果希望每个项目都有自己的颜色,可以修改项目(是否有“SetItemData”方法或类似方法)以保持颜色,然后执行以下操作:
dc.SetTextForeground(item.GetItemData()) # or whatever...
尝试the latest code from SVN-它可能已修复。在
你在Mac电脑上吗?我在PaintItem方法中找到了以下代码:
我不能确定其他平台,但它似乎使用了系统默认值。在
所以看起来唯一要做的就是修改类以添加一个内部高亮前景颜色,或者将其子类化并重写OnPaintItem方法(不幸的是,使用了大量的copy-pasta)。在
编辑
一个快速的方法是将此添加到
^{pr2}$__init__
方法中:然后在
OnPaintItem
方法中,将在方法末尾的dc.DrawLabel
调用之前立即添加以下代码:最后,在您自己的代码中,您将设置高亮前景颜色:
或者,如果希望每个项目都有自己的颜色,可以修改项目(是否有“SetItemData”方法或类似方法)以保持颜色,然后执行以下操作:
相关问题 更多 >
编程相关推荐