使用is_connected检查节点信号连接时,无对应信号的节点触发错误的解决方法
is_connected检查节点信号连接时,无对应信号的节点触发错误的解决方法
其实这个问题很好解决,本质就是你没必要给所有节点都做这个信号检查,毕竟只有LineEdit才有text_entered信号对吧?给你两个实用的方案:
方案一:先筛选出目标节点类型
既然只有你动态创建的LineEdit节点才会绑定text_entered信号,那遍历子节点时,先判断当前节点是不是LineEdit类型就好了。这样直接跳过Label这类无关节点,根本不会触发信号检查的错误。修改后的代码如下:for child in parent.get_children(): if child is LineEdit: if child.is_connected("text_entered", self, "_function_name"): child.disconnect("text_entered", self, "_function_name") child.queue_free()方案二:先检查节点是否存在目标信号
如果你不想局限于节点类型(比如未来可能有其他带text_entered信号的节点),可以先用has_signal()方法判断节点是否包含这个信号,再去检查连接状态。这样即使节点没有该信号,也不会报错。代码示例:for child in parent.get_children(): if child.has_signal("text_entered") and child.is_connected("text_entered", self, "_function_name"): child.disconnect("text_entered", self, "_function_name") child.queue_free()
这两个方案都能完美解决你遇到的调试错误,而且逻辑上更严谨——毕竟只有存在对应信号的节点,才需要去检查它的连接状态嘛。
备注:内容来源于stack exchange,提问作者DotFX
相关产品推荐
相关产品推荐

