という順番に出力されます。いくつかの測定値を記録するプログラムを作成しています。 1秒ごとにログを記録するには、ログ機能の最後にafter()
を使用してlog()
を呼び出しています。これは再帰を作成するので、時間の順序でログを返さないのでしょうか? (1秒間に1ログ以上も印刷する)どのように各エントリが1ログ/秒で時間順になっていることを確認できますか? 2列目のTkinterのafter()戻り値は
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,
、はっきりログインより1秒に1回よりも起こっている、とされていません。ここで
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)
は、いくつかのサンプル出力は次のとおりです。ここで
は、私のコードの一部であります時間の順序で返されます。 after()
の説明は役に立ちます。log()
のどこかに移動する必要がある場合、またはそれをどこに置く必要がありますか。
ありがとうございます。
スレッドを使用していますか? 'after'は再帰的ではありません。常に順番に項目を実行します。 –
'self.screen.insert(INSERT、self.t)'コールで 'INSERT'とは何ですか? 'self.screen'が' list'の場合、 'insert'メソッドの呼び出しシーケンスが間違っている可能性があります。 – martineau
私は 'self.screen'はtkinterのテキストウィジェットです。 –