PyQt3d-使用setEnabled方法仅在启用/禁用父项时启用/禁用子项

时间:2018-08-14 18:36:57

标签: python inheritance pyqt qt3d

我正在使用PyQt3d并尝试在初始化后启用/禁用球体实体。当我尝试时,它们仍显示在窗口中,但是isEnabled的值应为应有的值。例如,如果我先启用球体,然后按一个按钮将其禁用,isEnabled将返回false,但是球体仍显示在窗口中。我假设这与继承有关,因为直到实现实景图,问题才出现。我的场景图可以定义为Window-> Person-> Sphere,这意味着窗口将人作为孩子,而将人作为孩子。 Window,Person和Sphere是QEntity的子类。

我设置了一个测试来禁用按下按钮时的球体:

    def stop(self):
        #c_window is the 3d window, and getPerson(0) just gets the first
        #person added to the window
        #hideSpheres loops through the spheres(Children of the person) and disables them         
        self.c_window.getPerson(0).hideSpheres()
        print(self.c_window.getPerson(0).spheres[0].isEnabled())

这应该使所有球体都看不见,但事实并非如此。 isEnabled的输出为false。

这是我运行的有效测试,在该测试中,我禁用了Person(球的父级):

        def stop(self):
            #c_window is the 3d window, and getPerson(0) just gets the first
            #person added to the window       
            self.c_window.getPerson(0).hideSpheres()
            print(self.c_window.getPerson(0).spheres[0].isEnabled())

当我这样做时,这些球体也没有显示在窗口中,并且isEnabled的输出为true。

我找到了这篇文章,这似乎与我遇到的问题https://forum.qt.io/topic/37207/setenabled-vs-setdisabled相似。我希望能够单独启用/禁用领域。请让我知道是否需要更多代码/程序详细信息。谢谢。

0 个答案:

没有答案