我試圖連接一個插槽到PyQt 5.6與Python 3.5通過DBus發出的信號。PyQt 5.6:連接到一個DBus信號掛起
當我像這樣運行我的腳本QDBUS_DEBUG=1 python3 qtdbustest.py
它永遠不會呼叫print('Connected')
,而是掛在bus.connect(...)
呼叫。該信號被看到的總線在調試輸出作爲明顯的:
QDBusConnectionPrivate(0x7f3e60002b00):連接成功 QDBusConnectionPrivate(0x7f3e60002b00)得到消息(信號): QDBusMessage(類型=信號,服務=「有機freedesktop.DBus「 path =」/ org/freedesktop/DBus「,interface =」org.freedesktop.DBus「 QDBusConnectionPrivate(0x7f3e60002b00)傳遞中止
這是我最小的工作示例:
#!/usr/bin/python3
import sys
from PyQt5.QtCore import QObject, pyqtSlot
from PyQt5.QtWidgets import QApplication
from PyQt5.QtDBus import QDBusConnection, QDBusMessage
class DbusTest(QObject):
def __init__(self):
super(DbusTest, self).__init__()
bus = QDBusConnection.systemBus()
bus.connect(
'org.freedesktop.DBus',
'/org/freedesktop/DBus',
'org.freedesktop.DBus',
'NameAcquired',
self.testMessage
)
print('Connected')
@pyqtSlot(QDBusMessage)
def testMessage(self, msg):
print(msg)
if __name__ == '__main__':
app = QApplication(sys.argv)
discoverer = DbusTest()
sys.exit(app.exec_())
我在做什麼錯?必須有一些我忽略的東西,以致bus.connect(...)
實際上返回。