2009-08-13 70 views

回答

5

this源,你可以做到以下几点:

#!/usr/bin/env python 

def cb_func(account, rec, message): 
    #change message here somehow? 
    print message 

import dbus, gobject 
from dbus.mainloop.glib import DBusGMainLoop 
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) 
bus = dbus.SessionBus() 

bus.add_signal_receiver(cb_func, 
dbus_interface="im.pidgin.purple.PurpleInterface", 
signal_name="SendingImMsg") 

loop = gobject.MainLoop() 
loop.run() 

也许你可以开始使用这种领先优势。

4
import dbus 
from dbus.mainloop.glib import DBusGMainLoop 

main_loop = DBusGMainLoop() 
session_bus = dbus.SessionBus(mainloop = main_loop) 
obj = session_bus.get_object("im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject") 
purple = dbus.Interface(obj, "im.pidgin.purple.PurpleInterface") 

然后你可以使用紫色对象调用一些像这样的方法:当入门使用DBUS接口与洋泾浜是D-Feet

status = purple.PurpleSavedstatusNew("", current) 
purple.PurpleSavedstatusSetMessage(status, message) 
purple.PurpleSavedstatusActivate(status) 
2

一个真正有用的工具来使用。您可以看到所有可用的方法,甚至可以直接从GUI执行它们。

+0

Upvoted的提d英尺。似乎是一个非常好的dbus调试器工具。 – abbot 2009-10-19 14:38:57

0

您不需要对Pidgin进行任何特殊配置就可以使用D-Bus,但是如果您想使用它,它必须正在运行。您可以通过NetworkManager-dispatcher(part 1,part 2)查看我用来控制Pidgin状态的脚本,作为示例如何通过Python中的D-Bus连接Pidgin。

2

下面的代码提供了一个隐藏好友列表的示例,以及与特定联系人开始IM对话的另一个示例。

import dbus 
BUS_ARGS = ('im.pidgin.purple.PurpleService', '/im/pidgin/purple/PurpleObject') 
obj = dbus.SessionBus().get_object(*BUS_ARGS) 
purple = dbus.Interface(obj, 'im.pidgin.purple.PurpleInterface') 

# show buddy list if it is hidden 
purple.PurpleBlistSetVisible(1) 

# start IM conversation with specific contact 
account = purple.PurpleAccountsFindConnected('', '') 
conversation = purple.PurpleConversationNew(1, account, '[email protected]') 

我可以推荐一些有关使用DBUS与洋泾浜有用的资源:

  • Riding the D-Bus with Pidgin - 有三个独立的蟒蛇DBUS例子。
  • purple-remote - 这是一个python脚本,安装在我的ubuntu机器上时,我安装了pidgin。它是一个单独的文件,很容易阅读。
  • dbus-monitor - 监控dbus呼叫的好程序。它可以帮助您发现当您找不到记录的程序时正在使用的程序正在使用哪些呼叫。
  • qdbusviewer - 伟大的图形工具,可以列出pidgins dbus方法。您也可以从工具本身调用它们。

qdbusviewer