Я пытаюсь использовать модуль DBus PyQt5 для взаимодействия с KDE PowerManagerAgent.При вызове метода AddInhibo мне нужно отправить первый параметр в виде uint32 (Unsigned int), но код отправляет значение в виде целого числа.
Код написан с использованием Python 3
self.dBus = QtDBus.QDBusConnection.sessionBus()
msg = QtDBus.QDBusMessage.createMethodCall(self.dBusService, self.dBusPath,self.dBusInterface,'AddInhibition')
msg << 1 << who << reason
reply = QtDBus.QDBusReply(self.dBus.call(msg))
Глядя на выходные данные dbus-monitor, я могу сказать, что код действительно связывается с powermonitor, но не может найти правильный метод AddInhibox из-запервый параметр имеет тип int32
Вывод из dbus-monitor при попытке вызвать AddInhibition
Call
время вызова метода = 1549706946.073218 sender =: 1.172 -> destination =org.kde.Solid.PowerManagement.PolicyAgent serial = 5 path = / org / kde / Solid / PowerManagement / PolicyAgent;Интерфейс = org.kde.Solid.PowerManagement.PolicyAgent;member = AddIngression int32 1 string "Эта" строка "не удалась"
Ответ
время ошибки = 1549706946.073536 отправитель =: 1.29 -> destination =: 1.172 error_name = org.freedesktop.DBus.Error.UnknownMethod reply_serial = 5 string "Нет такого метода 'AddInhibi' в интерфейсе 'org.kde.Solid.PowerManagement.PolicyAgent' на пути к объекту '/ org / kde / Solid / PowerManagement / PolicyAgent' (подпись 'iss)') "
Вывод из dbus-монитора при использовании приложения QDBusViewer
Вызов
время вызова метода = 1549723045.320128 sender =: 1.82 -> destination = org.kde.Solid.Последовательность PowerManagement.PolicyAgent = 177 путь = / org / kde / Solid / PowerManagement / PolicyAgent;Интерфейс = org.kde.Solid.PowerManagement.PolicyAgent;member = AddInhibition uint32 1 строка "Эта" строка "Работает"
Ответ
время возврата метода = 1549723045.320888 отправитель =: 1,29 -> назначение =: 1,82 серийный = 1370reply_serial = 177 uint32 30
Поскольку Python не является строго типизированным, как мне указать, что параметр должен быть введен как беззнаковое целое?