据我所知,这并没有在 traitsui 编辑器中原生处理。最简单的事情(取决于您想要做什么)就是使用所需颜色的纯色图像(使用 ImageEditor)。即使您想在几种不同的颜色之间切换,ImageEnumEditor(只读样式)也可以捕获它们。
为了捕捉能够捕捉任意颜色的特征的表达能力(不列举我不推荐的 256^3 种可能颜色的列表),您需要做更多的工作。或许,您可以定义一个自定义编辑器来深入研究工具包代码,从而无需太多努力即可完成此操作。我打算尝试使用 wxpython 提供一个最小的工作示例,但是我没有在 wxpython 中找到一个非常明显的小部件来执行此操作,而且我的 wxpython 技能非常有限。
编辑:
一年前,我找到了一种生成带有彩色框的表格的方法。抱歉,我之前没有想到,如果您实际上并不想要将表格映射到颜色(这正是我想要的),那会很麻烦,所以我敢打赌,您可以使用 traitsui 而不是 wx 内部构造更简单的东西. 但是在任何地方,这里都有一些东西,本着试图为您提供工具来帮助解决您自己的问题的精神:
from traits.api import *
from traitsui.api import *
class ColorColumn(ObjectColumn):
def get_cell_color(self,object):
return object.color
class ColorContainer(HasTraits):
color=Color('red')
blank_text=Str('')
class SomeApplication(HasTraits):
dummy_table=List(ColorContainer)
def _dummy_table_default(self):
return [ColorContainer()]
traits_view=View(Item(name='dummy_table',
editor=TableEditor(columns=
[ColorColumn(label='',editor=TextEditor(),name='blank_text',editable=False)],
selection_bg_color=None,),show_label=False))
SomeApplication().configure_traits()
编辑2:
正如您所要求的,这是一个使用 ImageEnumEditor 或 ImageEditor 的最小工作示例。在此示例中,图像位于 /path_to_the_python_file/images。请注意,ImageEnumEditor 仅适用于 .gif 文件。
$ ls images
green.gif red.gif yellow.gif
from traits.api import *
from traitsui.api import *
from pyface.image_resource import ImageResource
class ImageEnumStyle(HasTraits):
ci=Enum('yellow','green','red','yellow')
traits_view=View(Item('ci',editor=ImageEnumEditor(path='images',),style='readonly'))
class ImageStyle(HasTraits):
ci=Instance(ImageResource)
#to modify the image, modify the ImageResource `name` attribute
def _ci_default(self):
return ImageResource('yellow.gif')
traits_view=View(Item('ci',editor=ImageEditor()))
ImageWhicheverStyleYouPrefer().configure_traits()