Переключение кнопки в panda3d - PullRequest
0 голосов
/ 21 мая 2019

Как бы вы поместили кнопку в состоянии «вниз» при первом щелчке и в состояние «нормально» при втором щелчке? И вы бы сделали это из 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 голосов
/ 21 мая 2019

Получил ответ из выступления panda3d.Ответ от Thaumaturge ниже

Хмм… Я не уверен, что поле «состояние» в DirectButton - это то, что вы ищете, а скорее метод «setState» в PGItem.В любом случае, соответствующее состояние не «выключено», а «DGG.BUTTON_DEPRESSED_STATE» (которое имеет значение «1»).Аналогично, состояние «готово» (то есть не нажато) имеет вид «DGG.BUTTON_READY_STATE» (которое имеет значение «0»).

Короче говоря, вы можете попробовать команду, подобную этой:

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