我正在将标准输出到wx。TextCtrl,在10行之后,我想删除第一行,所以在我的wx中只有最多10行。TextCtrl窗口。我有一个python脚本,使用多个线程和类。我只是不能为我的生活得到下面的代码工作,有人能给我一些提示吗?
a = 1
while True:
line = self.process1.stderr.readline().decode('utf-8')
wx.CallAfter(self.frame.running_log1.AppendText, line)
if a >= 10:
s = wx.CallAfter(self.frame.running_log1.GetLineLength, 0) +1
wx.CallAfter(self.frame.running_log1.Remove, 0, s)
print s
a +=1
当run s = None时,so失败。我用wx。
wx.CallAfter
返回None
的原因是在那个点没有任何东西可以返回。它不能返回长度,因为它所做的只是做了一个记录,在某个时候它需要调用这个函数。它没有实际调用函数,并且不会等到函数被调用。
def appendAndTrim(self, line):
self.frame.running_log1.AppendText(line)
self.line_count += 1
if self.line_count > 10:
first_line_length = self.frame.running_log1.GetLineLength(0) + 1
self.frame.running_log1.Remove(0, first_line_length)
然后我将这个方法传递给wx.CallAfter
,而不是对wx.CallAfter
进行三个单独的调用:
self.line_count = 0
while True:
line = self.process1.stderr.readline().decode('utf-8')
wx.CallAfter(self.appendAndTrim, line)