На этот вопрос ответили в другом форуме.Ответ Тауматурга ниже
То, что у вас есть, должно работать, и действительно, на моей машине это работает.
Однако есть одна проблема: вы не установили масштаб на своей кнопке,и поскольку 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, соответственно.
(вызов«запускать» излишний запуск операторов print в приведенном выше примере.)