首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置系统时钟停止循环

设置系统时钟停止循环
EN

Stack Overflow用户
提问于 2016-04-26 23:45:59
回答 1查看 54关注 0票数 0

我已经写了一个Python3程序,它运行在树莓派3ModelB上。它使用Tkinter,并具有使用root.after的非阻塞重复功能,该功能执行SPI通信。我的问题是,即使将系统时间倒退一分钟,也会导致函数停止重复。再次将时钟设置为向前,使其再次开始工作。我将问题简化为以下程序:

代码语言:javascript
复制
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”。如果我再次将时钟向前设置,它将再次开始打印"Hello“

问题不是Raspberry Pi,因为我在Microsoft Windows上得到了相同的行为。

我通常可以通过搜索stackoverflow和其他地方来找到问题的解决方案,但这个解决方案让我卡住了。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2016-04-26 23:58:37

它会停止,因为tkinter在调用after时使用当前时间来计算绝对未来时间。当您将时钟调回时,您必须等到这个将来的时间才能运行您的函数。

例如,如果您在中午12:00运行对after的调用,则下次调用该函数的时间将是12:00:01。如果将时钟设置回11:00,则必须等待1小时零1秒才能再次运行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36869776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档