如何在wxpython的CustomTreeC中更改所选项目的选择颜色

2024-04-24 09:08:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我用的是wxpython的CustumTreeCtrl。由于我的树层次结构中的一些项应该具有不同的textcolors,所以如果这些项在被选中时也保持其textcolors,这将非常有用。但是,当文本的颜色被选择为蓝色时(背景颜色也可以被自动更改为蓝色)。但我不想它变成白色。有没有一种方法可以在选定状态下更改项目的文本颜色?SetItemTextColour()只为未选择的项目设置文本颜色。。。在

干杯。在


Tags: 项目方法文本层次结构颜色状态wxpython蓝色
2条回答

尝试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__方法中:

^{pr2}$

然后在OnPaintItem方法中,将在方法末尾的dc.DrawLabel调用之前立即添加以下代码:

    dc.SetTextForeground(self.highlight_fgc)

最后,在您自己的代码中,您将设置高亮前景颜色:

    self.tree.highlight_fgc = wx.RED # etc...

或者,如果希望每个项目都有自己的颜色,可以修改项目(是否有“SetItemData”方法或类似方法)以保持颜色,然后执行以下操作:

    dc.SetTextForeground(item.GetItemData()) # or whatever...

相关问题 更多 >