我想访问Showbase之外定义的其他类别的Showbase及其属性。下面的代码完全显示了问题
from direct.showbase.ShowBase import ShowBase
from direct.gui.DirectGui import *
class Core(ShowBase):
def __init__(self):
ShowBase.__init__(self)
ButtonBar()
class ButtonBar():
def __init__(self):
self.btnsr = DirectButton(parent=pixel2d) # how do I access ShowBase from this class?
core = Core()
core.run()
使用当前代码,我无法将BTNSR置于Pixel2d,因为ButtonBar无法访问ShowBase。在将代码分为两个类别的同时,如何访问Showbase
在另一个论坛中回答了这一点。下面的thaumaturge回答
您在那里应该有效的工作,实际上,在我的机器上它确实可以。
但是,有一个问题:您尚未在按钮上设置比例尺,并且由于Pixel2D使用每个像素的比例为1个熊猫单位(我认为是(,因此您的默认尺寸的按钮太小容易看到。如果您给它更大的规模(例如" 300"(,则应在窗户的左上角看到它(Pixel2d的来源(。
(除非您看到我没有遇到的错误,在这种情况下:您在终点看到了什么?(
更一般地,如果我没有多大错误,Showbase将建立一个名为"基础"的全局变量,该变量与其他几个全球访问的事物(包括"渲染"one_answers" 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()
应该打印"小猫",然后是" lvecbase2i(,(",其中窗口的宽度和高度是我的情况,它们是800和600,重复。
。("运行"的调用对于在上面的示例中运行打印仪式是多余的。(