2016-05-05 12 views
0

Я редактирую приложение TraitsUI, которое использует Qt4. Как я могу стилизовать определенные элементы в представлении с помощью таблицы style_sheet?Как использовать идентификатор Qt4 или селектор классов в таблице стилей с помощью TraitsUI?

Я понимаю, что элемент/кнопка TraitsUI/etc переведена в возможно несколько виджета Qt. Я просто не могу понять, как ссылаться на конкретные элементы. Есть ли достойный способ создать определенный QLabel/QPushButtn/etc, который создан? Я был бы доволен возможностью назначить идентификаторы или класс созданным виджетам и использовать отдельную таблицу стилей или способ указать стиль при создании 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) 

ответ

1

The 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() 

Который производит интерфейс ниже:

enter image description here

+0

Thanks; завтра проверит. Мне также очень любопытно, если это где-то зарегистрировано. – jmilloy

+1

Кажется, что это не так, и в TraitsUI readthedocs нет ссылки на API, где я бы хотел ее найти. Хотя эта функция сохранилась с TraitsUI 4.1.0. Я бы посоветовал вам открыть вопрос о github, чтобы указать на отсутствие или сделать P R, чтобы добавить его, если вы для этого. Думая об этом больше, он может быть исключен из документов, так как этот параметр является Qt-специфичным, а документы обычно не агностичны. В любом случае, это хорошая тема для обсуждения в проблеме github, если вы хотите ее создать. –