PySide6.QtDBus.QDBusInterface

class QDBusInterface

QDBusInterface 类是远程对象接口的代理。更多

PySide6.QtDBus.QDBusInterface 的继承图

概要

方法

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

QDBusInterface 是一个通用的访问器类,用于调用远程对象、连接到远程对象导出的信号以及获取/设置远程属性的值。该类对于动态访问远程对象非常有用:也就是说,当您没有表示远程接口的生成代码时。

通常通过使用call()函数来放置调用,该函数构造消息,通过总线发送,等待回复并解码回复。信号通过使用普通的QObject::connect()函数连接。最后,使用QObject::property()和QObject::setProperty()函数访问属性。

以下代码片段演示了如何在一个名为com.example.Calculator的远程应用程序中执行"2 + 2"的数学操作,该应用程序通过会话总线访问。

QDBusInterface remoteApp( "com.example.Calculator", "/Calculator/Operations",
                          "org.mathematics.RPNCalculator" )
remoteApp.call( "PushOperand", 2 )
remoteApp.call( "PushOperand", 2 )
remoteApp.call( "ExecuteOperation", "+" )
reply = remoteApp.call( "PopOperand" )
if reply.isValid():
    printf( "%d", reply.value() ) # prints 4

DBus信号可以通过基于字符串的连接捕获 (参见 通过方法签名字符串指定信号和槽)。

__init__(service, path[, interface=""[, connection=QDBusConnection.sessionBus()[, parent=None]]])
Parameters:

创建一个动态的QDBusInterface对象,该对象与路径path上的对象在服务service上的接口interface相关联,使用给定的connection。如果interface为空字符串,则创建的对象将引用通过自省该对象找到的所有接口的合并。否则,如果interface不为空,则QDBusInterface对象将被缓存以加速相同接口的进一步创建。

parent 被传递给基类构造函数。

如果远程服务 service 不存在,或者在尝试获取远程接口 interface 的描述时发生错误,创建的对象将无效(参见 isValid() )。