PyGTK:阻止TextView更新,直到手动请求

时间:2013-06-07 18:46:33

标签: python pygtk

我有一个解析〜1GB文本数据的应用程序,因此在我的主工作循环中,我会定期执行以下操作以使GUI保持最新:

while gtk.events_pending(): gtk.main_iteration()

这很有效,数据处理快速退出。问题是当我添加TextView进行调试时。我一次只添加少量标记数据,但数量很多,这显然会产生大量未决事件并导致程序速度降低约100倍。

我想要一种方法来控制TextView何时发送挂起事件(例如,更新每100次插入而不是每次插入),因此gtk.main_iteration实际上正在处理其余GUI的事件。这样的事情可能吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用这样的python生成器:

def add_data(file, limit=1000):
    with open(file, "r") as textfile:
        for line_num, line in enumerate(textfile):
            text_buffer.insert_at_cursor(line)
            if line_num >= limit and line_num % limit == 0:
                textview.show()
                yield True
    yield False

def load_data(logfile):
    loader = add_data(logfile)
    load = True
    while load:
        load = loader.next()
        while gtk.events_pending(): gtk.main_iteration()