2016-04-26 81 views
0

我已經編寫了一個運行在Raspberry Pi 3 Model B上的Python 3程序。它使用Tkinter並使用執行SPI通信的root.after具有非阻塞重複功能。我的問題是,即使設置系統時間一分鐘,也會導致該功能停止重複。再次設置時鐘使其再次開始工作。我簡單的問題下面的程序:設置系統時鐘停止循環

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」 停止印刷 「你好」。如果我再次設置時鐘,它將再次開始打印「Hello」

問題不在於Raspberry Pi,因爲我在Microsoft Windows上獲得相同的行爲。

我通常可以通過在stackoverflow和其他地方搜索來找到問題的解決方案,但是這個問題讓我陷入困境。任何幫助,將不勝感激。

+0

你爲什麼改變時鐘? – cdarke

回答

0

它停止,因爲tkinter使用當前時間調用after來計算絕對未來時間。當你設置時鐘回來時,你必須等到這個將來的時間才能讓你的函數運行。

例如,如果在中午12:00您的電話號碼after運行,下次調用該函數將是12:00:01。如果您將時鐘重新設置爲11:00,則在再次運行之前,您必須等待一小時一秒。