我正在使用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()
答案 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()