我想从ShowBase之外定义的其他类访问ShowBase及其属性。下面的代码准确地显示了问题
TextureView
使用当前代码,我无法将btnsr父级绑定到pixel2d,因为ButtonBar无法访问ShowBase。如何在将代码分成两个类的同时访问ShowBase
答案 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”的调用与在上面的示例中运行打印语句是多余的。)