【发布时间】:2012-02-24 20:17:41
【问题描述】:
我写了这个:
def show_line(self):
next_line = self.curr_line + 1
self.line = self.lines[self.curr_line]
y = self.line.split(' ')
z = self.lines[next_line].split(' ')
d1 = datetime.datetime.fromtimestamp(float(y[0]))
d2 = datetime.datetime.fromtimestamp(float(z[0]))
d3 = d2-d1
d3s = str(d3)
sleep_time = int(float(d3s[6::]))*1000
print_on_screen(self.line)
glib.timeout_add(sleep_time, self.show_line)
self.curr_line += 1
return False
其中“line”是一个包含文件行的数组(我用 读线())。 在每一行中,都有时间戳,用于显示字符串 在屏幕上根据他们两个之间的差异(d3)。
问题是显示第一行,第三行,第五行,依此类推 并且不尊重时间戳。 有什么建议吗?
佛朗哥
【问题讨论】:
-
以上到底有什么问题?你告诉我们你想做什么,而不是什么是错的。
-
我对 glib.timeout_add 很好奇。你为什么用这个?一个问题是,当超时结束时,它会调用你的函数 self.showline,因此后面的行:“self.curr_line += 1”永远不会执行......
-
@Tom97531 这是不正确的。
self.curr_line += 1和return False行肯定会被执行。调用glib.timeout_add(或gobject.timeout_add,因为它似乎是为我调用的)不会以某种方式阻止函数的其余部分执行。