【发布时间】:2018-08-17 18:10:53
【问题描述】:
我正在尝试让我的 GTK 应用响应网络连接状态的变化。我的方法就是我在问题中所说的:Listen on a (NetworkManager) DBus signal。
我有一个使用 python-gi 的 python3 GTK 应用程序(我应该添加一个非常小的应用程序)。 据我所知,python-dbus(又名“import dbus”)已被弃用,我想通过 python-gi 使用 Gio。
我有一个较旧的脚本,它在系统 DBus 上侦听我感兴趣的信号,它使用“import dbus”和以下代码:
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
bus = dbus.SystemBus()
bus.add_signal_receiver(NMSignalHandler,
dbus_interface=NM_INTERFACE,
signal_name='StateChanged')
(后跟一个 gobject.MainLoop().run())
我认为将“移植”到 Gio 相对简单,但即使阅读了两个小时的文档,我也不知道该怎么做。 任何帮助将不胜感激。
我已经尝试过使用 Gio.NetworkMonitor.get_default() 及其“网络更改”信号,但它似乎报告 net_available(第二个参数)始终为真,默认监视器似乎没有报告合理的结果要么。
我将非常感谢任何帮助。
【问题讨论】:
标签: python linux gtk gio networkmanager