Dbus 的 Python 访问 Pidgin 数据结构
Posted
技术标签:
【中文标题】Dbus 的 Python 访问 Pidgin 数据结构【英文标题】:Python Access Pidgin Data Structure by Dbus 【发布时间】:2012-09-18 02:19:31 【问题描述】:我最近开始用 Python 编程并为 Pidgin 制作脚本/插件,我需要访问 PurpleConversationUiOps 并使用 has_focus 字段,基于 Pidgin 文档中的一些示例,我做了这个:
#!/usr/bin/env python
import dbus, gobject
from dbus.mainloop.glib import DBusGMainLoop
def view(conv):
if conv == 1: #if has focus
print "Has Focus"
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
bus = dbus.SessionBus()
bus.add_signal_receiver(view,
dbus_interface="im.pidgin.purple.PurpleConversationUiOps",
signal_name="HasFocus")
loop = gobject.MainLoop()
loop.run()
他没有给出错误但我没有收到任何信号,那么我如何访问 has_focus 字段?
【问题讨论】:
【参考方案1】:我已经用 d-feet 检查了我的 Pidgin 2.10.0 并且只有一个接口,im.pidgin.purple.PurpleInterface
。看来你要找的API是方法(不是信号)PurpleConversationHasFocus(int32 conv) -> int32
。
要获得对话,请使用PurpleGetConversations -> Array of int32
,或发送信号ConversationCreated(int32)
。
$ dbus-send --print-reply --dest=im.pidgin.purple.PurpleService /im/pidgin/purple/PurpleObject im.pidgin.purple.PurpleInterface.PurpleGetConversations
method return sender=:1.165 -> dest=:1.172 reply_serial=2
array [
int32 22042
]
$ dbus-send --print-reply --dest=im.pidgin.purple.PurpleService /im/pidgin/purple/PurpleObject im.pidgin.purple.PurpleInterface.PurpleConversationHasFocus int32:22042
method return sender=:1.165 -> dest=:1.174 reply_serial=2
int32 0
【讨论】:
以上是关于Dbus 的 Python 访问 Pidgin 数据结构的主要内容,如果未能解决你的问题,请参考以下文章