在Python中将g_signal从线程发送到main

时间:2018-05-27 01:59:56

标签: multithreading python-3.x glib pygobject

所以我发现这个gist关于如何创建一个"线程池"系统和我的问题是:当执行的功能在线程中完成时,"完成"信号必须从主线程发出(或到主线程)。要点上提出的解决方案是使用GObject.emit覆盖GObject.idle_add(GObject.GObject.emit, self, *args)函数,该函数在gist示例中起作用,但是对我来说不起作用。我创建了一个稍微修改过的代码版本,它可以满足我的需要,除了正确发送信号之外。

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,因此无法解决我的问题。关于什么事情的任何想法?

我可以找到他的要点here

0 个答案:

没有答案