如何在 TraitsUI 中使用 sheet 样式的 Qt4 id 或 class 选择器?

How can I use a Qt4 id or class selector in the style sheet with TraitsUI?

我正在编辑一个使用 Qt4 的 TraitsUI 应用程序。如何使用 style_sheet?

为视图中的特定元素设置样式

我知道一个 TraitsUI Item/Button/etc 可能被翻译成几个 Qt 小部件。我只是不知道如何引用特定元素。是否有一种合适的方式来设置所创建的特定 QLabel/QPushButtn/etc 的样式?我很乐意为创建的小部件分配 ID 或 class 并使用单独的样式 sheet 或在创建 Item/Button/etc 时指定样式的方法。

因此,例如,这是控制器中的一个简单视图,其中 style_sheet 将两个输入元素都涂成黄色。我希望能够以不同的方式设置这两个项目的样式。我该怎么做?

    def traits_view(self):
        style_sheet = '''
            QLineEdit { background: yellow }
            '''

        return QtView(
            Item('object.name'),
            Item('object.age'),
            style_sheet=style_sheet)

Item 可以单独使用 style_sheet 参数,因此您可以为每个项目创建单独的样式表,如示例的扩展所示:

from traits.api import HasStrictTraits, Int, String
from traitsui.api import Item
from traitsui.qt4.extra.qt_view import QtView


class MinimalWorkingExample(HasStrictTraits):
    name = String
    age = Int

    def traits_view(self):
        style_sheet_name = '''
            QLineEdit { background: yellow }
            '''
        style_sheet_age = '''
            QLineEdit { background: green }
            '''


        return QtView(
            Item('object.name', style_sheet=style_sheet_name),
            Item('object.age', style_sheet=style_sheet_age),
        )


if __name__ == '__main__':
    mwe = MinimalWorkingExample(name='Steven', age=32)
    mwe.configure_traits()

产生下面的 UI: