Python - 使用Glib mainloop导入模块

时间:2016-11-16 11:40:57

标签: python-3.x glib pybluez

我使用pygattlib与Python中的蓝牙设备进行交互。 它工作正常,但当我尝试在我的代码中使用DBus时会出现问题。

如果我导入gattlibGLib.MainLoop().run(),则在致电run()时程序会冻结。
我发现gattlib有自己的MainLoop用于内部异步调用。

我没有找到任何可以涵盖这个特定问题的内容,只是在C中有多个主循环的例子。

这是Python代码的相关部分:

import gattlib as bt

try:
    from gi.repository import GLib
except ImportError:
    import glib as GLib
import dbus
import dbus.service
from dbus.mainloop.glib import DBusGMainLoop

[...do stuff with gattlib here...]

DBusGMainLoop(set_as_default=True)
dbusService = SystemDBus()
try:
    loop = GLib.MainLoop()
    loop.run() # it stalls here, doesn't respond to DBus or anything
except KeyboardInterrupt:
    GLib.MainLoop().quit()

0 个答案:

没有答案