Python Gio.SimpleAction未发出更改状态信号

Python Gio.SimpleAction未发出更改状态信号,python,gtk,gtk3,gio,Python,Gtk,Gtk3,Gio,我正在尝试创建一个Gio.SimpleAction并连接到它的更改状态信号,以便在状态更改时执行特定操作,但我没有找到一个工作代码 下面是一个我尝试过(并期望成功)但没有成功的例子: from gi.repository import Gio, GLib call_count = 0 def _state_changed(action, state): action.set_state(state) global call_count call_count += 1

我正在尝试创建一个
Gio.SimpleAction
并连接到它的
更改状态
信号,以便在状态更改时执行特定操作,但我没有找到一个工作代码

下面是一个我尝试过(并期望成功)但没有成功的例子:

from gi.repository import Gio, GLib

call_count = 0
def _state_changed(action, state):
    action.set_state(state)
    global call_count
    call_count += 1
    print(state)

a = Gio.SimpleAction.new_stateful('foo', None, GLib.Variant.new_boolean(False))
a.connect('change-state', _state_changed)

print a.get_state().get_boolean()
a.set_state(GLib.Variant.new_boolean(True))
print a.get_state().get_boolean()
print call_count
运行此代码的输出为:

False
True
0
正如我们所看到的,状态确实发生了变化,但没有发出任何变化状态

这个代码示例有什么问题吗?如何正确检测
Gio中的状态更改。SimpleAction

方法
设置状态()
会影响状态更改。
change state
信号仅在响应状态更改请求时从
Gio.Action.change_state()
发出


我相信这个信号主要是为了允许Gio.SimpleAction的子类将代码注入到状态更改请求的处理中。

是的。谢谢你。将a.set_状态(GLib.Variant.new_boolean(True))更改为a.change_状态(…)可以解决此问题。