首页 > 解决方案 > 在 Python 中从线程向主发出 g_signal

问题描述

所以我找到了关于如何创建“线程池”系统的要点,我的问题是:当执行的函数在线程中完成时,必须从(或向)主线程发出“完成”信号。要点上提出的解决方案是覆盖GObject.emit函数 using GObject.idle_add(GObject.GObject.emit, self, *args)which 在要点示例中可以解决问题,但奇怪的是对我不起作用。我创建了他的代码的一个稍微修改过的版本,它可以满足我的需要,除了正确/完全发出信号。

class _IdleObject(GObject.GObject):
    """ Override GObject.GObject to always emit signals in the main thread by
    emmitting on an idle handler """
    @trace
    def __init__(self):
        GObject.GObject.__init__(self)

    @trace
    def emit(self, *args):
        GLib.idle_add(GObject.GObject.emit, self, *args)

总之,信号要么不发出,要么在辅助线程上发出(当发出函数覆盖被注释掉时),它不能更新 UI,因此不能解决我的问题。关于发生了什么的任何想法?

我的他的要点可以在这里找到

标签: multithreadingpython-3.xglibpygobject

解决方案


推荐阅读