在TraitsUI中更改字符,大小,特征的背景颜色

时间:2014-06-06 04:36:43

标签: enthought traitsui

我正在使用TraitsUI来制作GUI。我希望能够编辑更多关于GUI实际外观的信息。例如。我希望能够更改某些Str对象的字体,更改某些框的背景颜色,使用更大的字体大小(粗体/斜体等)使一些框更大。

这很容易吗?我一直在玩下面的玩具示例。但是我所做的所有尝试都没有奏效。我是否需要编辑视图或项目对象才能执行此操作?或者我是否需要创建自定义编辑器?

如果有人知道如何做一个突出如何做这些事情的简单例子。

谢谢,

class House(HasTraits):
    address = Str
    bedrooms = Int
    pool = Bool
    price = Int

    traits_view =View(
        Group(Item('address', style="readonly"), Item('bedrooms'), Item('pool'), Item('price'),show_border=True)
        )

hs = House()
hs.configure_traits()

1 个答案:

答案 0 :(得分:1)

我找到了解决这个问题的方法。我同意traitsui包在某些条件下不具备格式更改。我能够通过使用自定义处理程序来访问控制器,然后使用PyQt对象来更改格式。

在下面单击“池”复选框将更改背景颜色。您还可以访问其他子窗口小部件以执行更具体的任务。

如果有人知道更好/更多基于特征的方式,我会感兴趣。

from traits.api import *
from traitsui.api import *
import PyQt4



class HouseHandler(Handler):

    def object_pool_changed(self,info):
        if info.object.pool:
            print info.ui.control
            print info.ui.control.children()
            qtObject = info.ui.control
            palette = qtObject.palette()
            qtObject.setAutoFillBackground(True)
            palette.setColor(qtObject.backgroundRole(), PyQt4.QtCore.Qt.red)
            qtObject.setPalette(palette)
            #or with style sheets
            #info.ui.control.setStyleSheet('background-color: red')
        else:
            info.ui.control.setStyleSheet('background-color: None')


class House(HasTraits):
    address = Str
    bedrooms = Int
    pool = Bool
    price = Int
    traits_view =View(
            Group(Item('address', style="readonly"), Item('bedrooms'), Item('pool'), Item('price'),show_border=True),
            handler = HouseHandler()
        )

hs = House()
hs.configure_traits()