Python DBus错误:无法追加,类型错误为列表索引必须是整数或片,而不是dict

Python DBus错误:无法追加,类型错误为列表索引必须是整数或片,而不是dict,python,python-3.x,dbus,Python,Python 3.x,Dbus,我使用包dbus用Python编写了一个dbus程序 @dbus.service.method("com.fsevenm.castboard.KaroWidget", in_signature='', out_signature="a{si}") def get_screens(self): return [ { "id": 1 } ] 我确信类型和签名是正确的,

我使用包
dbus
用Python编写了一个dbus程序

@dbus.service.method("com.fsevenm.castboard.KaroWidget", in_signature='', out_signature="a{si}")
def get_screens(self):
    return [
        {
            "id": 1
        }
    ]
我确信类型和签名是正确的,但每次调用该方法时,控制台中都会出现以下错误:

错误:dbus.service:无法将([{'id':1}])附加到签名为a{si}的消息中::列表索引必须是整数或片,而不是dict
dbus的响应:

('g-io-error-quark:GDBus.error:org.freedesktop.DBus.Python.TypeError:'
'回溯(上次最近的呼叫):\n'
“File”/usr/lib/python3/dist-packages/dbus/service.py”,第751行,in'
“\u消息\u cb\n”
“\u方法\u回复\u返回(连接、消息、方法\u名称、签名等)”
“*retval)\n”
“File”/usr/lib/python3/dist-packages/dbus/service.py”,第254行,in'
“\u方法\u答复\u返回\n”
'reply.append(签名=签名,*retval)\n'
'TypeError:列表索引必须是整数或片,而不是列表\n'
“(36)”(“g-io-error-quark:GDBus.error:org.freedesktop.DBus.Python.TypeError:”
'回溯(上次最近的呼叫):\n'
“File”/usr/lib/python3/dist-packages/dbus/service.py”,第751行,in'
“\u消息\u cb\n”
“\u方法\u回复\u返回(连接、消息、方法\u名称、签名等)”
“*retval)\n”
“File”/usr/lib/python3/dist-packages/dbus/service.py”,第254行,in'
“\u方法\u答复\u返回\n”
'reply.append(签名=签名,*retval)\n'
'TypeError:列表索引必须是整数或切片,而不是dict\n'
' (36)')
如何修复此问题?

我扩展了,以获得一个字典列表,就像您尝试的那样

我认为数组中缺少了一个
a
,而字典中缺少了第二个
a

以下几点对我很有用:

@dbus.service.method("com.example.SampleInterface",
                     in_signature='', out_signature='aa{si}')
def GetArrayDict(self):
    return [
            {"first": 1},
            {"second": 2}
            ]