- class QDBusConnection#
QDBusConnection
类代表了一个到 D-Bus 总线守护进程的连接。 更多…摘要#
方法#
def
__init__()
def
asyncCall()
def
baseService()
def
call()
def
connect()
def
disconnect()
def
interface()
def
isConnected()
def
lastError()
def
name()
def
registerObject()
def
send()
def
swap()
静态函数#
def
connectToBus()
def
connectToPeer()
def
localMachineId()
def
sessionBus()
定义
systemBus()
注意
此文档可能包含自动从C++翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译有问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE创建工单的方式告诉我们。
详细描述#
此类是D-Bus会话的起点。使用它,您可以访问远程对象、接口;将远程信号连接到您对象的槽位;注册对象等。
使用
connectToBus()
函数创建D-Bus连接,该函数打开到服务器守护进程的连接并完成初始握手,将连接关联到一个名称。再次尝试使用相同名称进行连接将返回相同的连接。然后使用
disconnectFromBus()
函数断开连接。一旦断开连接,调用
connectToBus()
不会重新建立连接,您必须创建一个新的QDBusConnection
实例。为了方便使用最常见的两种连接类型,
sessionBus()
和systemBus()
函数将分别返回会话服务器守护进程和系统服务器守护进程的已打开连接。这些连接在首次使用时打开,并在QCoreApplication析构函数运行时关闭。D-Bus还支持端到端连接,不需要总线服务器守护进程。使用此设施,两个应用程序可以相互通信并交换消息。这可以通过将地址传递给由另一个使用
QDBusServer
的D-Bus应用程序打开的connectToBus()
函数来实现。- class BusType#
指定总线连接的类型。有效的总线类型如下
常量
描述
QDBusConnection.SessionBus
会话总线,与运行中的桌面会话关联
QDBusConnection.SystemBus
系统总线,用于与系统范围进程通信
QDBusConnection.ActivationBus
激活总线,是启动服务的总线的“别名”
在会话总线上,可以找到与同一用户共享相同桌面会话的其他应用程序(因此得名)。然而,在系统总线上,通常可以找到为整个系统共享的进程。
- class RegisterOption#
(继承自
enum.Flag
) 指定将对象注册到连接的选项。可能的值如下常量
描述
QDBusConnection.ExportAdaptors
导出在此对象中找到的适配器的内容
QDBusConnection.ExportScriptableSlots
导出此对象的脚本槽
QDBusConnection.ExportScriptableSignals
导出此对象的脚信信号
QDBusConnection.ExportScriptableProperties
导出此对象的脚本属性
QDBusConnection.ExportScriptableInvokables
导出此对象的脚本可调用项
QDBusConnection.ExportScriptableContents
ExportScriptableSlots | ExportScriptableSignals | ExportScriptableProperties的简称
QDBusConnection.ExportNonScriptableSlots
导出此对象的非脚本槽
QDBusConnection.ExportNonScriptableSignals
导出此对象的非脚本信号
QDBusConnection.ExportNonScriptableProperties
导出此对象的非脚本属性
QDBusConnection.ExportNonScriptableInvokables
导出此对象的非脚本可调用项
QDBusConnection.ExportNonScriptableContents
ExportNonScriptableSlots | ExportNonScriptableSignals | ExportNonScriptableProperties的简称
QDBusConnection.ExportAllSlots
导出此对象的所有槽
QDBusConnection.ExportAllSignals
导出此对象的所有信号
QDBusConnection.ExportAllProperties
导出此对象的所有属性
QDBusConnection.ExportAllInvokables
导出此对象的所有可调用项
QDBusConnection.ExportAllContents
导出此对象的所有内容
QDBusConnection.ExportChildObjects
导出此对象的所有子对象
- class UnregisterMode#
注销对象路径的模式
常量
描述
QDBusConnection.UnregisterNode
仅注销此节点:不注销子对象
QDBusConnection.UnregisterTree
注销此节点及其所有子树
但是,如果此对象使用
ExportChildObjects
选项注册,则UnregisterNode也会注销子对象。
- class VirtualObjectRegisterOption#
- class ConnectionCapability#
(继承自
enum.Flag
) 此枚举描述了D-Bus连接的可用功能。常量
描述
QDBusConnection.UnixFileDescriptorPassing
启用将Unix文件描述符传递给其他进程(见
QDBusUnixFileDescriptor
)有关内容,请参阅
- __init__(name)#
- 参数:
name – str
创建一个
QDBusConnection
对象,并将其连接到具有名称name
的连接。这不会打开连接。您必须调用
connectToBus()
来打开它。- __init__(other)
- 参数:
other –
QDBusConnection
创建一个
other
连接的副本。- asyncCall(message[, timeout=-1])#
- 参数:
message –
QDBusMessage
timeout – int
- 返回类型:
通过此连接发送消息并立即返回。此函数仅适用于方法调用。它返回一个类型为
QDBusPendingCall
的对象,可用于跟踪回复状态。如果在
timeout
毫秒内未收到回复,将自动发出错误,表示调用已过期。默认的timeout
是 -1,将被替换为一个适用于进程间通信的实现定义值(通常为 25 秒)。此超时也是 QDBusPendingCall::waitForFinished() 等待的上限。请参考
asyncCall()
函数以了解更友好的调用方式。注意
由于实现限制,对应用程序自己注册的对象进行的调用始终不是异步的。
- baseService()#
- 返回类型:
str
如果此
QDBusConnection
对象已连接,则返回此连接的唯一连接名称,否则返回空 QString。唯一连接名称是在连接时由 D-Bus 服务器守护进程分配的 ":x.xxx" 格式的字符串(其中 x 为十进制数字)。它在总线上唯一标识此客户端。
对于点对点连接,此函数返回空 QString。
- call(message[, mode=QDBus.Block[, timeout=-1]])#
- 参数:
message –
QDBusMessage
mode –
CallMode
timeout – int
- 返回类型:
通过此连接发送
message
并阻塞等待最多timeout
毫秒的回复。此函数仅适用于方法调用。它返回回复消息,其类型为ReplyMessage
或ErrorMessage
。如果在
timeout
毫秒内没有收到回复,将会自动发出错误消息指明调用超时。默认的timeout
值为 -1,这将用适用于进程间通信的实现定义的值替换(通常为 25 秒)。有关更友好的调用方式,请参阅
call()
函数。警告
如果
mode
为BlockWithGui
,此函数将重新进入 Qt 事件循环以等待回复。在等待期间,它可能会将信号和其他方法调用传递给您的应用。因此,在用 call() 放置调用时必须准备好处理重新进入。- callWithCallback(message, receiver, returnMethod, errorMethod[, timeout=-1])#
- 参数:
message –
QDBusMessage
receiver –
QObject
returnMethod – 字符串
errorMethod – 字符串
timeout – int
- 返回类型:
布尔值
通过此连接发送
message
并立即返回。当收到回复时,在receiver
对象中调用returnMethod
方法。如果发生错误,将调用errorMethod
方法。如果在
timeout
毫秒内没有收到回复,将会自动发出错误消息指明调用超时。默认的timeout
值为 -1,这将用适用于进程间通信的实现定义的值替换(通常为 25 秒)。此函数仅适用于方法调用。只要参数类型匹配且没有发生错误,确保槽将被调用一次带回复。
如果消息已发送,则返回
true
;如果消息无法发送,则返回false
。- callWithCallback(message, receiver, slot[, timeout=-1])
- 参数:
message –
QDBusMessage
receiver –
QObject
slot – 字符串
timeout – int
- 返回类型:
布尔值
这是一个重载函数。
通过此连接发送
message
并立即返回。当收到回复时,在receiver
对象中调用returnMethod
方法。此函数仅适用于方法调用。只要参数类型匹配且没有发生错误,确保槽将被调用一次带回复。
此函数有危险,因为它无法报告错误,包括超时过期错误。
如果消息已发送,则返回
true
;如果消息无法发送,则返回false
。- connect(service, path, interface, name, receiver, slot)#
- 参数:
service – 字符串
path – 字符串
interface – 字符串
name – str
receiver –
QObject
slot – 字符串
- 返回类型:
布尔值
将由
service
、path
、interface
和name
参数指定的信号连接到对象receiver
中的slot
。参数service
和path
可以是空字符串,表示连接到来自任何远程应用程序的任何与 (interface
、name
) 对的信号。如果连接成功,则返回
true
。警告
只有当参数匹配时,信号才会发送到槽。这种验证只能在收到信号时才能进行,而不能在连接时进行。
- connect(service, path, interface, name, signature, receiver, slot)
- 参数:
service – 字符串
path – 字符串
interface – 字符串
name – str
signature – 字符串
receiver –
QObject
slot – 字符串
- 返回类型:
布尔值
这是一个重载函数。
将信号连接到对象
receiver
中的slot
。与之前的connect()
重载不同,此函数允许通过signature
变量指定要连接的参数签名。然后该函数将验证此签名是否可以传送到由slot
指定的槽,否则返回 false。如果连接成功,则返回
true
。注意
此函数验证信号签名是否与槽的参数匹配,但它不会验证远程服务是否真的存在具有给定签名的信号。
- connect(service, path, interface, name, argumentMatch, signature, receiver, slot)
- 参数:
service – 字符串
path – 字符串
interface – 字符串
name – str
argumentMatch – 字符串列表
signature – 字符串
receiver –
QObject
slot – 字符串
- 返回类型:
布尔值
这是一个重载函数。
将信号连接到对象
receiver
中的slot
。与之前的connect()
重载不同,此函数允许通过signature
变量指定要连接的参数签名。然后该函数将验证此签名是否可以传送到由slot
指定的槽,否则返回 false。argumentMatch
参数列出了要按顺序匹配的字符串参数。请注意,为了匹配空字符串,您需要传递一个空但不是空的 QString(例如,QString(“”))。一个空的 QString 将跳过该位置的匹配。如果连接成功,则返回
true
。注意
此函数验证信号签名是否与槽的参数匹配,但它不会验证远程服务是否真的存在具有给定签名的信号。
打开类型为
type
的连接以连接到已知的总线之一,并将连接名称name
与其关联。返回与该连接关联的QDBusConnection
对象。- static connectToBus(address, name)
- 参数:
address – str
name – str
- 返回类型:
打开到地址
address
上的私有总线的连接,并将连接名称name
与其关联。返回与该连接关联的QDBusConnection
对象。- static connectToPeer(address, name)#
- 参数:
address – str
name – str
- 返回类型:
在地址
address
上打开对等连接,并将其与连接名称name
关联。返回与该连接关联的QDBusConnection
对象。- connectionCapabilities()#
- 返回类型:
返回与总线服务器或对等方协商后的连接能力。如果此
QDBusConnection
未连接,此函数返回无能力。- disconnect(service, path, interface, name, receiver, slot)#
- 参数:
service – 字符串
path – 字符串
interface – 字符串
name – str
receiver –
QObject
slot – 字符串
- 返回类型:
布尔值
断开由
service
、path
、interface
和name
参数指定的信号与对象receiver
中slot
的连接。参数必须与传递给connect()
函数的参数相同。如果断开连接成功,则返回
true
。- disconnect(service, path, interface, name, signature, receiver, slot)
- 参数:
service – 字符串
path – 字符串
interface – 字符串
name – str
signature – 字符串
receiver –
QObject
slot – 字符串
- 返回类型:
布尔值
这是一个重载函数。
从对象
receiver
中的槽slot
断开由service
,path
,interface
,name
和signature
参数指定的信号。所需参数必须与传递给connect()
函数的参数相同。如果断开连接成功,则返回
true
。- disconnect(service, path, interface, name, argumentMatch, signature, receiver, slot)
- 参数:
service – 字符串
path – 字符串
interface – 字符串
name – str
argumentMatch – 字符串列表
signature – 字符串
receiver –
QObject
slot – 字符串
- 返回类型:
布尔值
这是一个重载函数。
从对象
receiver
中的槽slot
断开由service
,path
,interface
,name
,argumentMatch
和signature
参数指定的信号。所需参数必须与传递给connect()
函数的参数相同。如果断开连接成功,则返回
true
。- static disconnectFromBus(name)#
- 参数:
name – str
关闭名为
name
的总线连接。请注意,如果还存在与同一连接关联的
QDBusConnection
对象,则连接不会关闭,直到所有引用被释放。但是,无法使用QDBusConnection
构造函数创建更多引用。- static disconnectFromPeer(name)#
- 参数:
name – str
关闭名为
name
的对等连接。请注意,如果还存在与同一连接关联的
QDBusConnection
对象,则连接不会关闭,直到所有引用被释放。但是,无法使用QDBusConnection
构造函数创建更多引用。- 接口()#
- 返回类型:
返回一个代表本连接上 D-Bus 服务器接口的
QDBusConnectionInterface
对象。- internalPointer()#
- 返回类型:
void
- isConnected()#
- 返回类型:
布尔值
如果此
QDBusConnection
对象已连接,则返回true
。- lastError()#
- 返回类型:
返回在此连接中发生的最后一个错误。
此函数为低级代码提供。如果您正在使用
call()
,错误代码将通过其返回值报告。有关内容,请参阅
- static localMachineId()#
- 返回类型:
返回 D-Bus 系统已知的本地机器 ID。每个运行 D-Bus 的节点或主机都有一个唯一的标识符,它可以用来在共享资源(如文件系统)的情况下区分不同的主机。
请注意,本地机器 ID 不保证在系统重启后维持不变,因此不应将此标识符存储在持久存储(如文件系统)中。它在此启动会话的整个生命周期内保持不变。
- name()#
- 返回类型:
str
返回该连接的连接名称,作为
connectToBus()
中给定的名称参数。可以使用连接名称来唯一标识实际的底层总线连接。从单个连接创建的副本将始终隐式共享底层连接,因此将具有相同的连接名称。
相反,具有不同连接名称的两个连接将始终连接到不同的总线,或者在该总线上具有不同的唯一名称(如由
baseService()
返回的)。有关内容,请参阅
返回在给定路径通过
path
的registerObject()
注册的对象。- registerObject(path, interface, object[, options=QDBusConnection.RegisterOption.ExportAdaptors])#
- 参数:
path – 字符串
interface – 字符串
object –
QObject
options – 组合
RegisterOption
- 返回类型:
布尔值
这是一个重载函数。
在路径
path
上注册对象object
,接口interface
的名称,并且如果注册成功则返回true
。参数options
指定了将暴露多少对象object
通过 D-Bus。此函数不替换现有对象:如果路径
path
已有一个注册的对象,此函数将返回 false。请先使用unregisterObject()
注销它。ExportChildObjects
标志根据注册对象路径和子 QObject::objectName 导出儿童对象。因此,重要的是子对象必须有一个对象名称。您不能将对象作为具有
ExportChildObjects
的对象的子对象进行注册。- registerObject(path, object[, options=QDBusConnection.RegisterOption.ExportAdaptors])
- 参数:
path – 字符串
object –
QObject
options – 组合
RegisterOption
- 返回类型:
布尔值
在路径
path
上注册对象object
,并且如果注册成功则返回true
。参数options
指定了将通过 D-Bus 暴露对象object
的多少。此函数不替换现有对象:如果路径
path
已有一个注册的对象,此函数将返回 false。请先使用unregisterObject()
注销它。ExportChildObjects
标志根据注册对象路径和子 QObject::objectName 导出儿童对象。因此,重要的是子对象必须有一个对象名称。您不能将对象作为具有
ExportChildObjects
的对象的子对象进行注册。- registerService(serviceName)#
- 参数:
serviceName – 字符串
- 返回类型:
布尔值
尝试在 D-Bus 服务器上注册
serviceName
并返回如果注册成功则返回true
。如果另一个应用程序已经注册了该名称,则注册将失败。有关内容,请参阅
- registerVirtualObject(path, object[, options=QDBusConnection.VirtualObjectRegisterOption.SingleNode])#
- 参数:
path – 字符串
对象 –
QDBusVirtualObject
- 返回类型:
布尔值
- send(message)#
- 参数:
message –
QDBusMessage
- 返回类型:
布尔值
将消息发送到该连接,不等待回复。这适用于错误、信号、返回值以及不需要返回值的调用。
如果消息成功入队,则返回
true
,否则为false。- 静态sessionBus()#
- 返回类型:
返回一个使用会话总线打开的
QDBusConnection
对象。该函数返回的对象引用在应用终止之前有效,此时将关闭连接并删除对象。- swap(other)#
- 参数:
other –
QDBusConnection
将此
QDBusConnection
实例与other
交换。- 静态systemBus()#
- 返回类型:
返回一个使用系统总线打开的
QDBusConnection
对象。该函数返回的对象引用在QCoreApplication析构函数运行时有效,此时连接将关闭并且对象将被删除。- unregisterObject(path[, mode=QDBusConnection.UnregisterMode.UnregisterNode])#
- 参数:
path – 字符串
模式 –
UnregisterMode
通过指定路径使用
registerObject()
注册的对象路径,取消注册对象,如果mode
是UnregisterTree
,则会取消注册其所有子对象。注意,您不能取消注册未使用
registerObject()
注册的对象。- unregisterService(serviceName)#
- 参数:
serviceName – 字符串
- 返回类型:
布尔值
取消注册与
registerService()
先前注册的服务serviceName
,如果成功则返回true
。有关内容,请参阅