gpt4 book ai didi

python - Gio.SimpleAction 不发出改变状态信号

转载 作者:太空宇宙 更新时间:2023-11-03 11:18:17 26 4
gpt4 key购买 nike

我正在尝试创建一个 Gio.SimpleAction 并连接到它的 change-state 信号,以便在状态更改时采取特定操作,但我失败了想出一个工作代码。

这是我已经尝试过(并期望有效)但没有成功的示例:

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 中的状态变化?

最佳答案

set_state() 方法影响状态改变。 change-state 信号仅在响应来自 Gio.Action.change_state() 的状态更改请求时发出。

我认为该信号主要是为了让 Gio.SimpleAction 的子类能够将代码注入(inject)到状态更改请求的处理中。

关于python - Gio.SimpleAction 不发出改变状态信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48409067/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com