如何在python中表示dbus类型b(oss)?

时间:2011-05-06 10:04:35

标签: python dbus

我正在使用python处理Mpris V2.1接口。

接口在文档中描述: http://www.mpris.org/2.1/spec/Playlists.html#Property:ActivePlaylist

签名显示它的复杂类型包含布尔值,对象和字符串。我只是想知道如何在python中表示类型。我有一个提供者列表或元组包含每个元素吗?我已经测试了它,但似乎无法正常工作。

1 个答案:

答案 0 :(得分:3)

根据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) )

您在编写客户端还是服务器?在后一种情况下,您还应该检查this question,其中提供了有关使用python dbus模块导出属性的详细信息。