是否可以在不引用发送器小部件的情况下连接到 Gtk/GObject 应用程序中的信号?
Is it possible to connect to signals in a Gtk/GObject app without a reference to the sender widget?
我正在 Python(Lutris,在 Github 上可用)中构建一个 Gtk 应用程序,我在应用程序的一部分发出自定义信号,我想连接到该信号在应用程序的一个完全不同的部分,接收器没有对发出信号的小部件的引用。
我一直在寻找一种方法来获得信号,即使没有引用该小部件,应用程序的任何小部件也可以连接到它。这可能与 GObject 有关吗?还是我需要使用其他东西,也许是 DBus?
在对该问题进行更多研究后,我找到了一个可行的解决方案。
在接收小部件上,可以使用 GObject.add_emission_hook
而不是 connect
,例如:
GObject.add_emission_hook(SenderType, 'signal-name', on_signal_callback)
与传统的回调不同,这个回调必须 return True 否则它只会工作一次。
我正在 Python(Lutris,在 Github 上可用)中构建一个 Gtk 应用程序,我在应用程序的一部分发出自定义信号,我想连接到该信号在应用程序的一个完全不同的部分,接收器没有对发出信号的小部件的引用。
我一直在寻找一种方法来获得信号,即使没有引用该小部件,应用程序的任何小部件也可以连接到它。这可能与 GObject 有关吗?还是我需要使用其他东西,也许是 DBus?
在对该问题进行更多研究后,我找到了一个可行的解决方案。
在接收小部件上,可以使用 GObject.add_emission_hook
而不是 connect
,例如:
GObject.add_emission_hook(SenderType, 'signal-name', on_signal_callback)
与传统的回调不同,这个回调必须 return True 否则它只会工作一次。