我反复发现自己处于这种情况,
class MainDisplay(HasTraits):
a=Instance(A,())
def __init__(self):
self.a=A()
traits_view=View(...)
class A(HasTraits):
i=Int()
j=Int()
k=Int()
def __init__(self):
i,j,k=something
a_display=Group('i','j','k')
问题:我想在我的主显示器中显示 ai,aj,ak。
约束:
(1) i,j,k 绝对必须是 A 而不是 MainDisplay 的成员。将它们包含在 MainDisplay 中是没有意义的,如果我对每个特征都这样做,MainDisplay 会变得过于混乱。
(2) MainDisplay 不能继承类 A。如果是,我可以在 traits_view 中执行“Include('a_display')”。这是从 MainDisplay 划分一些代码的一个很好的技巧,但在我的情况下它不起作用。
(3) MainDisplay 不能简单地复制 A 中的特征,然后将它们同步。例如 MainDisplay.dummy_i=Int(),然后在稍后的 init 中,self.sync_traits('dummy_i',self.a,'i',mutual=True)。最后在 MainDisplay.traits_view 中使用“dummy_i”。这同样有效,但 MainDisplay 类再次变得如此混乱!此外,每次我想更改 GUI(或特征)时,我都有两个地方要编辑,这会减慢开发速度。
我是 GUI 新手,但我觉得无法在运行时创建变量是一个奇怪而尴尬的限制。我的印象是,看起来要替换 traitsUI 的 Enaml 也有这个限制。
我的主要兴趣是显示 Mayavi 创建的 3D 几何图形并与之交互。PyQt可能没有这个限制吗?