设置系统时钟停止循环
问题描述:
我已经编写了一个运行在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和其他地方搜索来找到问题的解决方案,但是这个问题让我陷入困境。任何帮助,将不胜感激。
答
它停止,因为tkinter使用当前时间调用after
来计算绝对未来时间。当你设置时钟回来时,你必须等到这个将来的时间才能让你的函数运行。
例如,如果在中午12:00您的电话号码after
运行,下次调用该函数将是12:00:01。如果您将时钟重新设置为11:00,则在再次运行之前,您必须等待一小时一秒。
你为什么改变时钟? – cdarke