我正在使用HasTraits对象构建一个gui。我有一个主要对象,然后是gui的每个组件的对象。 我想在多个组件之间共享一个对象。例如,我有一个主窗口 A ,其中包含 B 和 C 组件。 C 需要访问 B 中的内容。目前我在做这个
class B(HasTraits):
...
class C(HasTraits):
...
class A(HasTraits):
b = Instance(B,())
c = Instance(C)
...
def _c_default(self):
return C(b = self.b,...)
...
这似乎不是最好的方法。还有子子组件,因此 A.C.D , D 需要 A.B 中的内容。
这是使用特征共享对象的最佳方式吗?
答案 0 :(得分:0)
这取决于用例,但你建议看起来像第一种方法。
一些意见:
如果您在应用程序设计方面进行更多讨论,可以查看Envisage以及它如何使用服务和扩展点在可插拔应用程序中正确共享对象。
示例:
class B(HasTraits):
name = Str
class C(HasTraits):
b = Instance(B)
name = DelegatesTo(b)
class A(HasTraits):
b = Instance(B,())
c = Instance(C)
...
def _c_default(self):
return C(b = self.b,...)
...
def _b_changed(self):
self.c.b = b