PySide6.QtDBus.QDBusConnectionInterface¶
- class QDBusConnectionInterface¶
QDBusConnectionInterface
类提供了对 D-Bus 总线守护程序服务的访问。更多…概要¶
方法¶
def
serviceOwner()
def
servicePid()
def
serviceUid()
def
startService()
信号¶
def
NameAcquired()
def
NameLost()
注意
本文档可能包含从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()
信号。另请参阅
- 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:
错误 –
QDBusError
call –
QDBusMessage
当在
callWithCallback()
过程中发生错误时,会发出此信号。error
指定了错误。call
是无法传递的消息。另请参阅
- isServiceRegistered(serviceName)¶
- Parameters:
serviceName – str
- Return type:
QDBusReply
如果服务名称
serviceName
当前已注册,则返回true
。- registerService(serviceName, qoption, roption)¶
- Parameters:
serviceName – str
qoption –
ServiceQueueOptions
roption –
ServiceReplacementOptions
- Return type:
QDBusReply
请求在总线上注册服务名称
serviceName
。qoption
标志指定了如果serviceName
已经注册,D-Bus 服务器应如何行为。roption
标志指定服务器是否应允许另一个应用程序替换我们注册的名称。如果服务注册成功,将会发出
serviceRegistered()
信号。如果我们被放入队列,当我们获得名称时,信号将会发出。如果roption
是AllowReplacement
,如果另一个应用程序替换了这个应用程序,将会发出serviceUnregistered()
信号。另请参阅
- 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()
注册。如果此应用程序拥有该名称的所有权,它将释放该名称以供其他应用程序声明。如果它只是将该名称排队,它将放弃其在队列中的位置。