首页 > 解决方案 > 在 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()

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

标签: pythonpanda3d

解决方案


从 panda3d 的话语中得到了答案。奇术师的回答如下

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

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

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

推荐阅读