我正在编写一个程序来记录一些测量结果。为了记录每一秒钟,我在记录功能log()
的末尾使用after()
来记忆它。这是否创建一个递归,因此不按时间顺序返回日志? (每秒打印超过1个日志)如何确保每个条目的时间顺序为每秒1个日志?让Tkinter的after()按照时间顺序返回输出
下面是一些我的代码:
def log(self):
if self.running ==True:
self.current_date = time.strftime("%Y-%m-%d")
now = datetime.datetime.now()
self.current_time = datetime.time(now.hour, now.minute, now.second)
if self.boolvars[0].get() == True:
self.t = self.t + str(self.current_date) + ", "
if self.boolvars[1].get() == True:
self.t = self.t + str(self.current_time) + ", "
if self.boolvars[2].get() == True:
self.t = self.t + str(self.mic.VacGetPressure(0)) + ", "
self.champres.append(str(self.mic.VacGetPressure(0)))
if self.boolvars[3].get() == True:
...
...
...
self.screen.insert(INSERT, self.t)
self.parent.after(1000,self.log)
下面是一些示例输出:
2017-06-16, 13:18:37, 0.001,
2017-06-16, 13:18:36, 0.001,
2017-06-16, 13:18:36, 0.001,
2017-06-16, 13:18:36, 0.001,
2017-06-16, 13:18:37, 0.001,
2017-06-16, 13:18:37, 0.001,
2017-06-16, 13:18:37, 0.001,
2017-06-16, 13:18:36, 0.001,
2017-06-16, 13:18:36, 0.001,
2017-06-16, 13:18:36, 0.001,
2017-06-16, 13:18:37, 0.001,
2017-06-16, 13:18:37, 0.001,
2017-06-16, 13:18:37, 0.001,
2017-06-16, 13:18:38, 0.001,
2017-06-16, 13:18:36, 0.001,
2017-06-16, 13:18:36, 0.001,
2017-06-16, 13:18:36, 0.001,
2017-06-16, 13:18:37, 0.001,
在第二列中,清楚地记录正在发生超过每秒一次,并且没有被按时间顺序返回。 对after()
的任何解释将会有所帮助,并且如果我需要将其从log()
中移出或放在何处。
在此先感谢。
您是否在使用线程? ''之后'不是递归的。并将始终按顺序执行项目。 –
'self.screen.insert(INSERT,self.t)'调用中的INSERT是什么?如果'self.screen'是一个'list',那么'insert'方法的调用序列可能是错误的。 – martineau
我愿意赌'self.screen'是一个tkinter文本小部件。 –