访问其他类别的Showbase



我想访问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,重复。

("运行"的调用对于在上面的示例中运行打印仪式是多余的。(

相关内容

  • 没有找到相关文章

最新更新