[英]Using DBus in python program
問題1:
我試圖制作一個腳本來與Pidgins DBus對話。 我的腳本現在是這樣的:
#!/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
來實現這一點。 我進行了很多搜索,但沒有找到有關此主題的任何有用文檔。
Question2:我在某處讀到python 3不支持DBus,這是真的嗎? 它將代替它使用什么?
謝謝你們。
我搜索了更多並找到了一些解決方案。 現在我的代碼就是這樣,並且效果很好;-):
#!/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_()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.