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()
将状态更改为“关闭”会冻结 Button,因为它不是有效状态。如何实现此功能?
解决方案
从 panda3d 的话语中得到了答案。奇术师的回答如下
嗯……我不确定 DirectButton 的“状态”字段是否是您要查找的内容,而是 PGItem 的“setState”方法。无论哪种方式,适当的状态都不是“down”,而是“DGG.BUTTON_DEPRESSED_STATE”(其值为“1”)。类似地,“就绪”(即未按下)状态是“DGG.BUTTON_READY_STATE”(其值为“0”)。
简而言之,您可以尝试这样的命令:
myDirectButton.node().setState(DGG.BUTTON_DEPRESSED_STATE)
推荐阅读
- javascript - 如何在 Cypress 中对带有间谍的对象进行断言?
- python - 可以在白色文本上获得黑色边框吗?
- node.js - 收不到邮件
- java - DateTimeParseException:无法在索引 2 处解析文本
- angular - Angular 6 - 当我更改页面时 reCAPTCHA v2 不工作
- json - 如何在 Ionic 上将对象转换为 Json?
- python - 如何在 WinPython 中显示完整数据?
- c# - 使用 Jquery 的 $.post() 的 POST 请求,不允许使用 405 方法
- sql-server - 在 SQL Server 2016 上以公共用户身份执行 xp_regread
- javascript - 如何在 Vuejs 中使用带有 JSX 语法的 @input 和 contentEditable 将 dom 变成可输入的 dom?