我已经编写了一个python3程序,它运行在raspberrypi3model B上。它使用Tkinter,并且有一个使用root.after
执行SPI通信的非阻塞重复函数。我的问题是,即使将系统时间向后设置一分钟,也会导致函数停止重复。把钟再往前拨,它就又开始工作了。我已将问题简化为以下程序:
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 date--set=“YYYY-MM-DD HH:MM:SS”将时钟向后设置,它将停止打印“Hello”。如果我把时钟再往前拨,它又开始打印“你好”
问题不在于Raspberry Pi,因为我在microsoftwindows上也有同样的行为。你知道吗
我通常可以通过在stackoverflow和其他地方搜索来找到问题的解决方案,但这一个让我卡住了。任何帮助都将不胜感激。你知道吗
它停止了,因为tkinter在调用
after
时使用当前时间来计算绝对未来时间。当您将时钟向后设置时,您必须等到将来的这个时间才能运行函数。你知道吗例如,如果在中午12:00运行对
after
的调用,那么下次调用函数的时间将是12:00:01。如果你把钟拨回11点,你得等一个小时一秒,钟才能再响。你知道吗相关问题 更多 >
编程相关推荐