class QDBusInterface#

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

Inheritance diagram of 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]]])#
参数:

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

parent 传递给基类构造函数。

如果远程服务 service 不存在,或在尝试获取远程接口 interface 描述时出现错误,则创建的对象将是不合法的(请参阅 isValid() )。