0

我正在使用 python 和 wxPython 开发一个程序。我有一个列表框,我需要实时更新它以用作日志。

我已经简单地使用 Append() 函数完成了此操作,但是添加到列表框中的文本直到过程结束才显示,而不是在执行 Append 命令时显示。我知道这一点,因为每次插入后我都会打印列表框的大小。

def writeLog(self, text):
    self.log.Append(text)
    print self.log.GetStrings().__len__()

现在,出于检查目的,我正在调用具有以下代码的脚本:

parent.writeLog("aaaaaa")
sleep(1)
parent.writeLog("aaaaaa")
sleep(1)
parent.writeLog("aaaaaa")

我已经尝试过这些答案,但我无法让它们为我工作: Update a ListBox in wxPython wxPython: Update wx.ListBox list

那么,如何在调用 writeLog 函数后立即在屏幕上看到更新的列表框?可能吗?谢谢!

4

1 回答 1

1

您在这里有几个选项,最简单的可能是wx.Yield()在您希望更新 ui 时调用,所以在您Append调用之后

另一种解决方案是获取需要在单独线程中添加的任何文本,然后通过自定义事件pubsub将其发送回主线程,然后可以发送Append到列表框

于 2012-09-18T14:33:39.967 回答