PyQt5 在 dbus 请求失败时创建错误
PyQt5 create error upon failed dbus request
使用 PyQt5 的 D-Bus,如何创建错误?例如,如果有人在聊天程序中发送未知命令,我希望能够让客户端知道如下内容:
error = QDBusMessage.createError(QDBusError.UnknownProperty, "unknown command")
QDBusConnection.systemBus().send(error)
但是,此操作失败并显示消息:
*** TypeError: arguments did not match any overloaded call:
createErrorReply(self, str, str): first argument of unbound method must have type 'QDBusMessage'
createErrorReply(self, QDBusError): first argument of unbound method must have type 'QDBusMessage'
createErrorReply(self, QDBusError.ErrorType, str): first argument of unbound method must have type 'QDBusMessage'
我无法完全理解这个错误,因为据我所知,我完全按照描述使用它。第一个 arg 必须是 QDBusMessage,因为那是点之前的内容。第二个参数是正确的类型,由 type(QDBusError.UnknownProperty)
返回 <class 'PyQt5.QtDBus.QDBusError.ErrorType'>
。引号表示它是一个字符串,这就是 str
是什么。
我也试过sendErrorReply(),但在PyQt5中似乎不存在。至少,我找不到它 - 它不在 systemBus
的 send()
旁边,而且在 QDBusMessage
.
中也找不到
PyQt5 的 examples/dbus/chat
文件夹中的两个示例均未发出错误。 http://pyqt.sourceforge.net/Docs/PyQt5/QtDBus.html 上没有 Python 文档可用。
当我遇到和你一样的问题时,我遇到了你的问题,PyQt5 中缺少 sendErrorReply
。
以下是我如何让它在我的蓝牙应用程序中工作:
@pyqtSlot(QDBusMessage)
def AuthorizeService(self, message):
print("rejecting service authorization")
error = message.createErrorReply(QDBusError.AccessDenied, "Failed")
self._bus.send(error)
诀窍是根据收到的消息创建错误回复。
使用 PyQt5 的 D-Bus,如何创建错误?例如,如果有人在聊天程序中发送未知命令,我希望能够让客户端知道如下内容:
error = QDBusMessage.createError(QDBusError.UnknownProperty, "unknown command")
QDBusConnection.systemBus().send(error)
但是,此操作失败并显示消息:
*** TypeError: arguments did not match any overloaded call:
createErrorReply(self, str, str): first argument of unbound method must have type 'QDBusMessage'
createErrorReply(self, QDBusError): first argument of unbound method must have type 'QDBusMessage'
createErrorReply(self, QDBusError.ErrorType, str): first argument of unbound method must have type 'QDBusMessage'
我无法完全理解这个错误,因为据我所知,我完全按照描述使用它。第一个 arg 必须是 QDBusMessage,因为那是点之前的内容。第二个参数是正确的类型,由 type(QDBusError.UnknownProperty)
返回 <class 'PyQt5.QtDBus.QDBusError.ErrorType'>
。引号表示它是一个字符串,这就是 str
是什么。
我也试过sendErrorReply(),但在PyQt5中似乎不存在。至少,我找不到它 - 它不在 systemBus
的 send()
旁边,而且在 QDBusMessage
.
PyQt5 的 examples/dbus/chat
文件夹中的两个示例均未发出错误。 http://pyqt.sourceforge.net/Docs/PyQt5/QtDBus.html 上没有 Python 文档可用。
当我遇到和你一样的问题时,我遇到了你的问题,PyQt5 中缺少 sendErrorReply
。
以下是我如何让它在我的蓝牙应用程序中工作:
@pyqtSlot(QDBusMessage)
def AuthorizeService(self, message):
print("rejecting service authorization")
error = message.createErrorReply(QDBusError.AccessDenied, "Failed")
self._bus.send(error)
诀窍是根据收到的消息创建错误回复。