簡體   English   中英

在TraitsUI中更改特征的字體,大小,背景顏色

[英]Changing Fonts, Size , Background Color of Traits in 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()

我找到了解決這個問題的方法。 我同意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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM