没有获得dbus消息参数

时间:2015-08-19 09:56:29

标签: python dbus

我已经设置了一段读取dbus消息的代码:

def nf(bus, message):
  print(message)
  args = message.get_args_list()
  for arg in message.get_args_list():
    print("arg:" + arg)

DBusGMainLoop(set_as_default=True)
bus = dbus.SessionBus()
bus.add_match_string_non_blocking("interface='org.freedesktop.Notifications',eavesdrop='true',member='Notify'")
bus.add_message_filter(nf)
mainloop = gobject.MainLoop()
mainloop.run()

当我开始它时,我得到开始消息<dbus.lowlevel.SignalMessage path: /org/freedesktop/DBus, iface: org.freedesktop.DBus, member: NameAcquired, dest: :1.215>和参数1.215 但是当我发送带有notify-send的邮件时,我也会收到<dbus.lowlevel.MethodCallMessage path: /org/freedesktop/Notifications, iface: org.freedesktop.Notifications, member: Notify dest: :1.212>消息,但我没有得到任何论据。当我用dbus-monitor尝试这个时,我得到了所有的论点。我错过了什么?

1 个答案:

答案 0 :(得分:1)

出于某种原因,arg不喜欢用其他东西放入打印声明中。似乎python不会自动将列表项转换为字符串,就像你只是打印类似arg [0]一样。

更改

print('arg:' + arg)

print('arg:' + str(arg))

甚至

print('%s %s' % ('arg:', arg))