PySide6.QtDBus.QDBusConnectionInterface

class QDBusConnectionInterface

QDBusConnectionInterface 类提供了对 D-Bus 总线守护程序服务的访问。更多

PySide6.QtDBus.QDBusConnectionInterface 的继承图

概要

方法

信号

注意

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

详细描述

D-Bus 总线服务器守护进程提供了一个特殊的接口 org.freedesktop.DBus,允许客户端访问总线的某些属性,例如当前连接的客户端列表。QDBusConnectionInterface 类提供了对该接口的访问。

该类最常见的用途是使用registerService()unregisterService()函数在总线上注册和注销服务名称,使用isServiceRegistered()registeredServiceNames()serviceOwner()函数查询现有名称,并通过serviceRegistered()serviceUnregistered()和serviceOwnerChanged()信号接收客户端注册或注销的通知。

class ServiceQueueOptions

用于确定在服务名称已注册的情况下,服务注册应如何行为的标志。

常量

描述

QDBusConnectionInterface.DontQueueService

如果应用程序请求一个已经被占用的名称,将不会执行排队操作。registeredService() 调用将直接失败。这是默认行为。

QDBusConnectionInterface.QueueService

尝试注册请求的服务,但如果另一个应用程序已经注册了该服务,则不要尝试替换它。相反,只需将此应用程序放入队列中,直到放弃为止。当这种情况发生时,将发出serviceRegistered()信号。

QDBusConnectionInterface.ReplaceExistingService

如果另一个应用程序已经注册了服务名称,尝试替换它。

class ServiceReplacementOptions

用于确定D-Bus服务器是否应允许另一个应用程序替换此应用程序已使用ReplaceExistingService选项注册的名称的标志。

可能的值为:

常量

描述

QDBusConnectionInterface.DontAllowReplacement

不允许其他应用程序替换我们。服务必须显式地使用unregisterService()取消注册,以便其他应用程序可以获取它。这是默认设置。

QDBusConnectionInterface.AllowReplacement

允许其他应用程序在不干预的情况下使用ReplaceExistingService选项替换我们到registerService()。如果发生这种情况,将会发出serviceUnregistered()信号。

另请参阅

ServiceQueueOptions

class RegisterServiceReply

registerService() 可能的返回值:

常量

描述

QDBusConnectionInterface.ServiceNotRegistered

调用失败,服务名称未注册。

QDBusConnectionInterface.ServiceRegistered

调用者现在是服务名称的所有者。

QDBusConnectionInterface.ServiceQueued

调用者指定了QueueService标志,并且服务已经注册,因此我们处于队列中。

当服务被此应用程序获取时,将发出serviceRegistered()信号。

NameAcquired(arg__1)
Parameters:

arg__1 – str

NameLost(arg__1)
Parameters:

arg__1 – str

NameOwnerChanged(arg__1, arg__2, arg__3)
Parameters:
  • arg__1 – str

  • arg__2 – 字符串

  • arg__3 – 字符串

activatableServiceNames()
Return type:

QDBusReply

callWithCallbackFailed(error, call)
Parameters:

当在callWithCallback()过程中发生错误时,会发出此信号。error指定了错误。call是无法传递的消息。

另请参阅

callWithCallback()

isServiceRegistered(serviceName)
Parameters:

serviceName – str

Return type:

QDBusReply

如果服务名称 serviceName 当前已注册,则返回 true

registerService(serviceName, qoption, roption)
Parameters:
Return type:

QDBusReply

请求在总线上注册服务名称 serviceNameqoption 标志指定了如果 serviceName 已经注册,D-Bus 服务器应如何行为。roption 标志指定服务器是否应允许另一个应用程序替换我们注册的名称。

如果服务注册成功,将会发出serviceRegistered()信号。如果我们被放入队列,当我们获得名称时,信号将会发出。如果roptionAllowReplacement,如果另一个应用程序替换了这个应用程序,将会发出serviceUnregistered()信号。

另请参阅

unregisterService()

registeredServiceNames()
Return type:

QDBusReply

serviceOwner(name)
Parameters:

name – str

Return type:

QDBusReply

返回名称name的主要所有者的唯一连接名称。如果请求的名称没有所有者,则返回org.freedesktop.DBus.Error.NameHasNoOwner错误。

serviceOwnerChanged(name, oldOwner, newOwner)
Parameters:
  • name – str

  • oldOwner – str

  • newOwner – str

请使用QDBusServiceWatcher代替。

每当总线中发生服务所有权变更时,包括名称的出现和消失,D-Bus服务器都会发出此信号。

此信号表示应用程序 oldOwner 失去了总线名称 name 的所有权,转交给了应用程序 newOwner。如果 oldOwner 是一个空字符串,这意味着名称 name 刚刚被创建;如果 newOwner 为空,则名称 name 当前没有所有者,并且不再可用。

注意

连接到此信号将使应用程序监听并接收总线上每一个服务所有权变更。根据运行的服务数量,这可能导致应用程序被激活以接收比实际需要更多的信号。为了避免这个问题,使用QDBusServiceWatcher类,它可以监听特定的变更。

servicePid(serviceName)
Parameters:

serviceName – str

Return type:

QDBusReply

返回当前持有总线服务serviceName的进程的Unix进程ID(PID)。

serviceRegistered(service)
Parameters:

服务 – str

当应用程序获取到由service给出的总线服务名称(唯一连接名称或知名服务名称)时,D-Bus服务器会发出此信号。

获取发生在此应用程序使用registerService()请求名称之后。

serviceUid(serviceName)
Parameters:

serviceName – str

Return type:

QDBusReply

返回当前持有总线服务serviceName的进程的Unix用户ID(UID)。

serviceUnregistered(service)
Parameters:

服务 – str

当此应用程序失去由service给出的总线服务名称的所有权时,D-Bus服务器会发出此信号。

startService(name)
Parameters:

name – str

Return type:

QDBusReply

请求总线启动由名称 name 提供的服务。

unregisterService(serviceName)
Parameters:

serviceName – str

Return type:

QDBusReply

释放对总线服务名称 serviceName 的声明,该名称之前已通过 registerService() 注册。如果此应用程序拥有该名称的所有权,它将释放该名称以供其他应用程序声明。如果它只是将该名称排队,它将放弃其在队列中的位置。