NM 1.0无错误时如何传递NM.SecretAgentOldGetSecretsFunc第4参数?
解决PyGObject中NM.SecretAgentOld回调传None触发类型错误的问题
问题根源
PyGObject对NM.SecretAgentOldGetSecretsFunc的类型绑定有严格校验,无错误场景下传入None作为GLib.Error参数时,会触发类型不匹配错误,官方示例也存在该问题。
解决方案
无错误时不要传None,而是创建一个空的GLib.Error实例(错误码为0、错误信息为空)传递给回调函数,绕过类型检查同时符合NetworkManager的无错误要求。
代码示例
from gi.repository import NM, GLib class CustomSecretAgent(NM.SecretAgentOld): def do_get_secrets(self, connection, setting_name, hints, flags, callback, user_data): # 示例:获取到的密码信息 secrets = { setting_name: { "psk": "your_network_password" } } # 创建无错误的Error实例 no_error = GLib.Error.new_literal(GLib.quark_from_string(""), 0, "") # 调用回调,传入结果和空错误 callback(connection, secrets, no_error, user_data)
补充说明
- 错误码0是NetworkManager认可的“无错误”标识,空错误信息不会干扰正常流程。
- 如果上述方式仍有问题,可直接使用默认构造函数创建空Error实例:
no_error = GLib.Error()
内容的提问来源于stack exchange,提问作者Abir Halder
相关产品推荐
相关产品推荐

