import gobject import dbus import dbus.service if getattr(dbus, 'version', (0,0,0)) >= (0,41,0): import dbus.glib def test(service, obj, iface, name): print 'Create object' class TTt(dbus.service.Object): def __init__(self, service, obj): self.service = service self.obj = obj def ready(self): dbus.service.Object.__init__(self, self.service, self.obj) obj = TTt(service, obj) def method(self): print 'Called' print 'Setting method' setattr(obj, name, method) print 'Wrapping method' setattr(obj, name, dbus.service.method(iface)(getattr(obj, name))) obj.ready() return obj session_bus = dbus.SessionBus() print 'Acquiring name' bus_name = dbus.service.BusName('org.freedesktop.HelloWorld', bus=session_bus) object = test(bus_name, '/org/freedesktop/HelloWorldObject', 'org.freedesktop.HelloWorldIFace', 'hello') print dir(object) def handle(e=None): print 'Reply handled' def ttt(): print 'ttt' proxy_obj = session_bus.get_object('org.freedesktop.HelloWorld', '/org/freedesktop/HelloWorldObject') print 'getting Iface' iface = dbus.Interface(proxy_obj, 'org.freedesktop.HelloWorldIFace') print 'Calling' iface.hello(reply_handler=handle,error_handler=handle) print 'Waiting' gobject.timeout_add(1000, ttt) mainloop = gobject.MainLoop() mainloop.run()