动态 Python 倒数计时器

Posted

技术标签:

【中文标题】动态 Python 倒数计时器【英文标题】:Dynamic Python Countdown Timer 【发布时间】:2016-01-27 00:15:53 【问题描述】:

这里是初学者的业余 Python 脚本编写者(抱歉,如果我无意中使用了不正确的术语)。我正在寻找在 Python 中创建一个倒数计时器,它考虑到未来的设定日期和当前日期。

例如,如果我想制作一个“死亡时钟”(即倒数计时器,可以倒计时到我的估计死亡日期),则计时器需要从当前日期倒计时到我估计的死亡日期年份将来,后者将被硬编码到 Python 脚本中。

我想我必须做一些事情,比如获取当前日期,将其转换为秒,从死亡日期中减去它(这也将转换为秒),然后将差值转换为年月-days-hours-minutes-seconds 格式,然后将是倒计时计时器的起点(计时器最好需要能够在倒计时时显示年、月、日、小时、分钟和秒)。

有没有一种相对简单的方法可以让计时器显示在 Linux 终端中,或者这样做会很痛苦?

提前感谢您的帮助。

【问题讨论】:

在某些终端中,在将新文本放在同一个位置之前删除旧文本可能会出现问题。 【参考方案1】:

您可以获得两次之间的增量:

from datetime import datetime

my_death = datetime(2044, 3, 24)
lacking = datetime.now() - my_death

这个lacking 对象有一些您可以使用的有用属性,例如lacking.dayslacking.total_seconds()

【讨论】:

【参考方案2】:

您必须告诉终端覆盖当前行而不是打印到新行。 这仅适用于正确处理控制字符的系统。它可以在 Windows 命令提示符下运行,我刚刚在 OSX 上进行了测试,但在 Idle 中没有。

import sys,time

def msg(txt):
    sys.stdout.write(txt)
    sys.stdout.flush()

for sec in range(10):
    time.sleep(1)
    m = "%2d seconds" % (10-sec)
    msg(m + chr(13))

关于时间操作,您可以使用datetime 模块来计算和格式化日期间隔(例如+3 天)。 https://docs.python.org/2/library/datetime.html

【讨论】:

以上是关于动态 Python 倒数计时器的主要内容,如果未能解决你的问题,请参考以下文章

用 Python 和 Tkinter 制作倒数计时器?

按秒倒数计时器

为啥倒数计时器突然执行得很快?

带有 CircularProgressIndicator 的倒数计时器

如何检查可观察倒数计时器是不是已完成?

Flutter:当倒数计时器达到 0 时执行动作