2016-04-26 26 views
0

私はRaspberry Pi 3モデルBで動作しているPython 3プログラムを書いています。これはTkinterを使用しており、SPI通信を行っているroot.afterを使用してノンブロッキングの繰り返し機能を持っています。私の問題は、システム時刻を1分も前に戻すと、機能が繰り返されなくなるということです。時計をもう一度転送すると、再び動作を開始します。私は、次のプログラムに問題を単純化していますシステムクロックを設定するループ

import tkinter as tk 
from tkinter import * 

def MyLoop(): 
    print ("Hello") 
    root.after(1000, MyLoop) 

root = tk.Tk() 

root.after(200, MyLoop)    # Start the non-blocking loop. 

root.mainloop()      #Start the GUI loop. 

私はsudoの日付--set =使用して戻って時計を設定した場合は、 "YYYY-MM-DD HH:MMの:SS" は、それが印刷 "こんにちは" を停止します。時計をもう一度転送すると、再び「こんにちは」が印刷され始めます。

Microsoft Windowsで同じ動作が発生するため、問題はRaspberry Piではありません。

私は通常、stackoverflowや他の場所で検索することによって問題の解決策を見つけることができますが、これは私を抱きしめています。どんな助けもありがとう。

+0

なぜクロックを変更していますか? – cdarke

答えて

0

tkinterは、将来の絶対時間を計算するためにafterを呼び出すときに現在の時刻を使用するため、停止します。時計を戻すときは、関数が実行されるまでの時間を待たなければなりません。

たとえば、afterへの呼び出しが12:00までに実行された場合、次回関数が呼び出されたときの時刻は12:00:01になります。時計を11:00に戻した場合は、もう一度実行する前に1時間30秒待たなければなりません。

関連する問題