如何在Python中表示dbus类型b(oss)?
我正在用Python开发一个Mpris V2.1的接口。
这个接口的具体内容可以在这个文档里找到: http://www.mpris.org/2.1/spec/Playlists.html#Property:ActivePlaylist
文档里提到的类型比较复杂,里面包含布尔值、对象和字符串。我想知道在Python里应该怎么表示这种类型。是不是需要提供一个包含每个元素的列表或元组呢?我试过了,但好像不太管用。
1 个回答
4
根据D-Bus的规范,(b(oss))
是一个包含两个部分的结构,第一个是布尔值(也就是真或假),第二个是一个包含三个部分的结构:一个对象路径和两个字符串。在Python中,这可以表示成类似下面的形式:
dbus.Struct((dbus.Boolean(a_boolean),
dbus.Struct((dbus.ObjectPath(s1),
dbus.String(s2),
dbus.String(s3)))),
signature="(b(oss))")
不过,你也可以把它当作一个简单的Python元组来使用,像这样:
( a_boolean, (s1, s2, s3) )
你是在写客户端还是服务器?如果是服务器的话,你还应该查看这个问题,里面有关于如何使用Python的dbus模块导出属性的详细信息。