从其他类访问ShowBase

时间:2019-05-21 12:45:46

标签: python panda3d

我想从ShowBase之外定义的其他类访问ShowBase及其属性。下面的代码准确地显示了问题

TextureView

使用当前代码,我无法将btnsr父级绑定到pixel2d,因为ButtonBar无法访问ShowBase。如何在将代码分成两个类的同时访问ShowBase

1 个答案:

答案 0 :(得分:0)

这在另一个论坛中得到了回答。下面的Thaumaturge回答

您所拥有的应该可以工作,并且确实可以在我的机器上工作。

但是,有一个问题:您尚未在按钮上设置缩放比例,并且pixel2d使用每像素1个熊猫单位的缩放比例(我认为是),因此按钮的默认大小太小轻松看到。如果您给它更大的比例(例如“ 300”),则应该在窗口的左上角(pixel2d的原点)看到它。

(当然,除非您看到我没有得到的一些错误,否则您会看到什么?)

更一般而言,如果我没记错的话,ShowBase会建立一个名为“ base”的全局变量,该变量与其他几个可全局访问的内容(包括“ render”和“ pixel2d”)一起应该可以从很大程度上访问任何地方。

您因此可以执行以下操作:

from direct.showbase.ShowBase import ShowBase
from direct.gui.DirectGui import *

class Core(ShowBase):
    def __init__(self):
        ShowBase.__init__(self)
        self.cat = "Kitty"

class SomeOtherClass():
    def __init__(self):
        print (base.cat)
        print (base.win.getSize())

core = Core()
mew = SomeOtherClass()
core.run()

应该打印“ Kitty”,然后打印“ LVecBase2i(,)”,其中和是窗口的宽度和高度-在我的情况下,分别为800和600。

(对“ run”的调用与在上面的示例中运行打印语句是多余的。)