1

質問1:

PidginsDBusと話すためのスクリプトを作成しようとしました。私のスクリプトは次のようになりました。

#!/usr/bin/env python

import dbus, gobject
from dbus.mainloop.glib import DBusGMainLoop

class DBus_Answer():
    def __init__(self, text):
        dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
        bus = dbus.SessionBus()
        self.answer = text

        bus.add_signal_receiver(self.my_func,
                                dbus_interface="im.pidgin.purple.PurpleInterface",
                                signal_name="ReceivedImMsg")
        loop = gobject.MainLoop()
        loop.run()

    def my_func(self, account, sender, message, conversation, flags):
        print sender, "said:", message
        bus = dbus.SessionBus()
        obj = bus.get_object("im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject")
        purple = dbus.Interface(obj, "im.pidgin.purple.PurpleInterface")
        purple.PurpleConvImSend(purple.PurpleConvIm(conversation), self.answer)

run = DBus_Answer("My message!")

これは正常に機能します。しかし、私の元のプログラムはを使用しており、この点を達成するためPyQt4に使用したいと思います。QDBusたくさん検索しましたが、このトピックに関する有用なドキュメントは見つかりませんでした。

質問2:Python 3がDBusをサポートしていないことをどこかで読みましたが、本当ですか?その代わりに何を使用しますか?

皆さん、ありがとうございました。

4

1 に答える 1

1

私はもっ​​と検索して、いくつかの解決策を見つけました。今私のコードはこのようで、うまく機能します;-):

#!/usr/bin/env python

import sys
import dbus
from PyQt4.QtGui import QApplication
from dbus.mainloop.qt import DBusQtMainLoop

class DBus_Answer():
    def __init__(self, text):
        self.answer = text
        bus_loop = DBusQtMainLoop(set_as_default=True)
        self.bus = dbus.SessionBus()
        self.bus.add_signal_receiver(self.my_func,
                                     dbus_interface="im.pidgin.purple.PurpleInterface",
                                     signal_name="ReceivedImMsg")

    def my_func(self, account, sender, message, conversation, flags):
        obj = self.bus.get_object("im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject")
        purple = dbus.Interface(obj, "im.pidgin.purple.PurpleInterface")
        purple.PurpleConvImSend(purple.PurpleConvIm(conversation), self.answer)

app = QApplication(sys.argv)
run = DBus_Answer("Slam")
app.exec_()
于 2012-09-12T20:39:54.160 に答える