wxpython中的pyshell的小问题

一位叫孙骏朋友突然问我,下面的这段代码,在pyshell中运行时不能实时的显示出结果,而在其它的shell环境下,如pythonwin中可以实时显示。如果你在此环境中测试线程,问题就更明显了。

代码如下:

import time
for i in range(5):
print i
print time.ctime()
time.sleep(1)

结果如下:

0
Sat Nov 04 12:52:08 2006
1
Sat Nov 04 12:52:09 2006
2
Sat Nov 04 12:52:10 2006
3
Sat Nov 04 12:52:11 2006
4
Sat Nov 04 12:52:12 2006

在wxpython的pyshell不能实时逐行显示结果。我测试了一下,确实如此。我想结果有点怪,不应如此。
看了一下pyshell的代码,在shell.py中加如下的代码就可以解决问题了。

 
def write(self, text):
"""Display text in the shell.

Replace line endings with OS-specific endings."""

text = self.fixLineEndings(text)
self.AddText(text)
self.Refresh()#add
self.Update()#add
self.EnsureCaretVisible()

你可能感兴趣的:(OS,wxPython)