gpt4 book ai didi

python - PyGtk3 ~ 允许来自用户的信号,但不允许以编程方式发出信号

转载 作者:行者123 更新时间:2023-12-01 05:51:33 28 4
gpt4 key购买 nike

我的问题与 PyGObject、Gtk3 和信号抑制有关。

我有一个 ComboBoxText,已连接信号。

self.cbtPaths = Gtk.ComboBoxText()
self.cbtPaths.connect("changed", self.on_changed_path)

def on_changed_path(self,action):
path = self.cbtPaths.get_active_text()
i = self.hPaths.change(path)
self.cbtPaths.set_active(i) #1
当用户更改 ComboBoxText 时,将调用

self.on_changed_pa​​th()。这很好。

当代码执行标记为 #1的行时,将调用

on_changed_pa​​th()。这会导致永无止境的循环。

我的问题是:如何防止#1 处的线路触发已更改信号?

注意:我也在代码的另一部分调用 self.cbtPaths.set_active(i)

最佳答案

您可能需要handler_block()handler_unblock()。前者会阻止实例的处理程序在任何信号发射期间不被调用。该处理程序将被阻止,直到您取消阻止为止。

您可以尝试以下操作:

self.cbtPaths.handler_block(self.on_changed_path)
self.cbtPaths.set_active(i)
self.cbtPaths.handler_unblock(self.on_changed_path)

您还可以查看GOBject API's documentation ,虽然有点有限。

关于python - PyGtk3 ~ 允许来自用户的信号,但不允许以编程方式发出信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14114665/

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