在panda3d中切换按钮

时间:2019-05-21 16:52:21

标签: python panda3d

您如何在第一次单击时将按钮置于“按下”状态,而在第二次单击时将按钮置于“正常”状态?并且您会使用DirectButton或DirectCheckButton来实现吗?这是我到目前为止尝试过的。

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.makebtns()

    def makebtns(self):
        self.btnsr = DirectButton(command=self.toggle)
        self.btnsr['extraArgs'] = [self.btnsr]

    def toggle(self,me):
        if me['state'] == 'normal':
            me['state'] = 'down'


core = Core()
core.run()

将状态更改为“按下”会冻结按钮,因为它不是有效状态。如何实现此功能?

1 个答案:

答案 0 :(得分:0)

从panda3d话语中得到答案。 Thaumaturge的答案在下面

嗯……我不确定DirectButton的“状态”字段是否是您要查找的,而是PGItem的“ setState”方法。不管哪种方式,适当的状态都不是“ down”,而是“ DGG.BUTTON_DEPRESSED_STATE”(其值为“ 1”)。同样,“就绪”(即未按下)状态为“ DGG.BUTTON_READY_STATE”(其值为“ 0”)。

简而言之,您可以尝试这样的命令:

myDirectButton.node().setState(DGG.BUTTON_DEPRESSED_STATE)