python - PyQt5:当有同名信号时如何调用方法
问题描述
我正在尝试通过 PyQt5 使用QBluetoothDeviceDiscoveryAgent。
有一个信号名称error
。我已经能够成功连接它(像这样:)self.error.connect(self.on_error)
并确认它正在工作。
但是,还有一种方法名为error
. 如何在 Python 中调用此方法?
我期待类似的东西error_
,但我没有看到任何dir(QBluetoothDeviceDiscoveryAgent)
看起来有用的东西:
['DiscoveryMethod', 'DiscoveryMethods', 'Error', 'GeneralUnlimitedInquiry', 'InputOutputError', 'InquiryType', 'InvalidBluetoothAdapterError', 'LimitedInquiry', 'NoError', 'PoweredOffError', 'UnknownError', 'UnsupportedDiscoveryMethod', 'UnsupportedPlatformError', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattr__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'blockSignals', 'canceled', 'childEvent', 'children', 'connectNotify', 'customEvent', 'deleteLater', 'destroyed', 'deviceDiscovered', 'disconnect', 'disconnectNotify', 'discoveredDevices', 'dumpObjectInfo', 'dumpObjectTree', 'dynamicPropertyNames', 'error', 'errorString', 'event', 'eventFilter', 'findChild', 'findChildren', 'finished', 'inherits', 'inquiryType', 'installEventFilter', 'isActive', 'isSignalConnected', 'isWidgetType', 'isWindowType', 'killTimer', 'lowEnergyDiscoveryTimeout', 'metaObject', 'moveToThread', 'objectName', 'objectNameChanged', 'on_deviceDiscovered', 'on_error', 'on_finished', 'parent', 'property', 'pyqtConfigure', 'receivers', 'removeEventFilter', 'sender', 'senderSignalIndex', 'setInquiryType', 'setLowEnergyDiscoveryTimeout', 'setObjectName', 'setParent', 'setProperty', 'signalsBlocked', 'start', 'startTimer', 'staticMetaObject', 'stop', 'supportedDiscoveryMethods','thread', 'timerEvent', 'tr']
解决方案
您必须直接调用该函数:
print(your_QBluetoothDeviceDiscoveryAgent.error())
这将返回一个对应于下表的数字:
QBluetoothDeviceDiscoveryAgent::NoError 0 No error has occurred.
QBluetoothDeviceDiscoveryAgent::PoweredOffError 2 The Bluetooth adaptor is powered off, power it on before doing discovery.
QBluetoothDeviceDiscoveryAgent::InputOutputError 1 Writing or reading from the device resulted in an error.
QBluetoothDeviceDiscoveryAgent::InvalidBluetoothAdapterError 3 The passed local adapter address does not match the physical adapter address of any local Bluetooth device.
QBluetoothDeviceDiscoveryAgent::UnsupportedPlatformError 4 Device discovery is not possible or implemented on the current platform. The error is set in response to a call to start(). An example for such cases are iOS versions below 5.0 which do not support Bluetooth device search at all. This value was introduced by Qt 5.5.
QBluetoothDeviceDiscoveryAgent::UnsupportedDiscoveryMethod 5 One of the requested discovery methods is not supported by the current platform. This value was introduced by Qt 5.8.
QBluetoothDeviceDiscoveryAgent::UnknownError 100 An unknown error has occurred.
如果您想获得最易读的文本,请使用:
print(your_QBluetoothDeviceDiscoveryAgent.errorString())
推荐阅读
- signalr - 如何使用 Angular 7 获取特定页面中的总活跃用户数
- php - 如何计算具有不同记录的查询?
- reporting-services - 我能否从我的自定义实用程序创建 Tableau(或任何其他报告工具)可以读取的报告文件?
- docker - 无法安装 Docker:Docker 桌面需要 Windows 10 专业版或企业版 15063 才能运行
- amp-html - AMP页面如果你使用浏览器返回,你不能点击任何其他链接
- javascript - 背包问题还是排列?如何解决我的问题?
- python - 即使使用查找工具也无法访问 macOS 上的应用程序文件夹
- django - Django:无法在包含点的模板中引用字段名
- sql - 如何计算 SQL 中某个值的每小时平均值?
- javascript - 如何检查哪些孩子溢出了父母的div