这本身并不在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()
EDIT2:
按照您的要求为,这是一个使用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()
另一种可能性可能是使用enable来开发一个只显示纯色的“组件” - 我不确定这是多么简单。 – aestrivex
感谢您的建议。使用图像可以,但是我找不到动态调整图像大小的方法,这有点烦人。 – RobMSN
您能否提供ImageEnumEditor如何实现这一目标的最低工作示例?非常感谢! – RobMSN