J'ai lu des rubriques relatives à la création dynamique de méthodes python, et j'ai suivi leurs instructions, mais cela ne fonctionne pas. Je ne sais pas si c'est parce que j'utilise décorateur @
ou autre chose.Création dynamique d'un signal DBus en python
Le code est ici, très simple.
Lors de l'exécution de ce code, aucune erreur ne s'est produite, mais lorsque j'utilise D-feet
(un outil pour vérifier les informations dbus), je n'ai pas pu trouver de nouveaux signaux que j'ai créés.
#!/usr/bin/python
import dbus
import dbus.service
import dbus.glib
import gobject
from dbus.mainloop.glib import DBusGMainLoop
import psutil
class EventServer(dbus.service.Object):
i = 0
@dbus.service.signal('com.github.bxshi.event')
def singal_example(self,msg):
""" example of singals
"""
print msg
def __init__(self):
bus_name = dbus.service.BusName('com.github.bxshi.event', bus=dbus.SessionBus())
dbus.service.Object.__init__(self, bus_name, '/com/github/bxshi/event')
def create(self):
self.i +=1
setattr(self.__class__, 'signal_'+str(self.i), self.singal_example)
if __name__ == "__main__":
DBusGMainLoop(set_as_default=True)
bus = dbus.SessionBus()
eventserver = EventServer()
gobject.timeout_add(1000,eventserver.create)
loop = gobject.MainLoop()
loop.run()
Je ne veux pas émettre de signaux, La chose que je veux est de créer un nouveau signal à l'exécution. Je veux dire au début, je ne peux avoir qu'un seul signal, et après une demande vient d'un autre processus, je vais créer un nouveau signal pour cela. – bxshi