我正在編寫一個程序來記錄一些測量結果。爲了記錄每一秒鐘,我在記錄功能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文本小部件。 –