2010-11-08 8 views
11

मुझे अजगर और डीबीस के साथ समस्या है। मैंने डेवलपर दस्तावेज़ और विनिर्देशों की जांच की, लेकिन मुझे समझ में नहीं आता कि मुख्य लूप कैसे सेट अप करें। मैं अधिसूचना घटनाओं के लिए सुनना चाहता हूँ। देखेंपायथन और डी-बस: मुख्य लूप कैसे सेट करें?

http://dbus.freedesktop.org/doc/dbus-python/doc/

और

http://www.galago-project.org/specs/notification/0.9/index.html

मेरे उदाहरण स्क्रिप्ट:

import dbus 
from dbus.mainloop.glib import DBusGMainLoop 

class MessageListener: 

    def __init__(self): 

     DBusGMainLoop(set_as_default=True) 

     self.bus = dbus.SessionBus() 
     self.proxy = self.bus.get_object('org.freedesktop.Notifications', 
      '/org/freedesktop/Notifications') 

     self.proxy.connect_to_signal('NotificationClosed', 
      self.handle_notification) 

    def handle_notification(self, *args, **kwargs): 
     print args, kwargs 


if __name__ == '__main__': 
    MessageListener() 

DBusGMainLoop रन की तरह कोई और तरीकों है()। अगर मैं gobject से एक पाश का उपयोग करें और sourcecode बदलने के लिए:

import gobject 
loop = gobject.MainLoop() 
dbus.set_default_main_loop(loop) 
... 
loop.run() 

मैं त्रुटि संदेश निम्नलिखित हो:

Traceback (most recent call last): 
    File "dbus_example.py", line 40, in <module> 
    MessageListener() 
    File "dbus_example.py", line 9, in __init__ 
    dbus.set_default_main_loop(loop) 
TypeError: A dbus.mainloop.NativeMainLoop instance is required 

किसी भी विचार इसके बारे में क्या करना है? अग्रिम धन्यवाद। Phineas

उत्तर

7

अपने कोड के शीर्ष पर import gobject रखो, और अपने वस्तु instantiating के बाद, gobject.MainLoop().run() है। मुझे लगता है कि MainLoop को DBusGMainLoop के बाद बनाया जाना है।

+2

बहुत बहुत धन्यवाद, यह अब काम करता है। मुख्य पाश का निर्माण बहुत स्पष्ट नहीं है, है ना? – phineas

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^