您如何在第一次单击时将按钮置于“按下”状态,而在第二次单击时将按钮置于“正常”状态?并且您会使用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()
将状态更改为“按下”会冻结按钮,因为它不是有效状态。如何实现此功能?
答案 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)