Как изобразить dbus типа b (oss) в python? - PullRequest
0 голосов
/ 06 мая 2011

Я работаю над интерфейсом Mpris V2.1 с python.

Интерфейсы описаны в документе: http://www.mpris.org/2.1/spec/Playlists.html#Property:ActivePlaylist

Подпись показывает, что ее сложный тип содержит логическое значение, объект и строки. Мне просто интересно, как представить тип в Python. У меня есть провайдер, список или кортеж содержит каждый элемент? Я проверил это, но, кажется, не работает.

1 Ответ

3 голосов
/ 10 мая 2011

Согласно спецификации 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.

...