【发布时间】:2019-05-07 09:39:36
【问题描述】:
我正在使用 Python 制作一个计时器程序。我最终想在 Raspberry Pi 上运行它。这是一项名为'Flyball' 的狗运动。
目前,我的程序使用秒表类以秒显示时间,精确到小数点后 3 位。我可以使用'lap' 按钮触发一个事件,该事件将显示按下单圈按钮时的单圈时间。
我想做的是运行一个'drag tree' of lights'。当我按下“开始”时,我的计时器从 -6.0 秒开始。我的 GUI 上有灯光图像,我希望它们在设定的时间触发:-
-3.0sec, 1st amber light on.
-2.0sec, 2nd amber light on.
-1.0sec, 3rd amber light on.
0.0sec, Green light on.
如果我能做到这一点,那么在灯亮起时添加哔哔声也不会做太多工作。
我认为我需要某种形式的循环来不断检查当前秒表时间并将其与 -3.0 之类的设定时间进行比较。 任何人都可以就如何做这样的事情给我任何建议吗?提前谢谢你。
我可以自己运行灯光树。我使用 time.sleep() 来隔开灯光时间(相隔 1 秒),在全部亮起时将它们打开 3 秒,然后再次关闭。 我通过使用 itemconfig(state = 'normal') 或 itemconfig(state = 'hidden') 来做到这一点 我也使用 tk.after() 得到相同的结果。
如果我在计时器运行时尝试运行此拖动树,计时器显示将由于睡眠功能而停止更新。 如果我用 tk.after() 再试一次,第一个灯会显示,但其余的序列不会完成,除非我按计时器上的“停止”。
我尝试使用 if nextTime == -3.0 类型的条件在命令提示符中触发简单的打印语句,但没有出现任何内容。
这段sn-p代码是秒表类中的Updater函数。它更新了屏幕上显示的时间。我可以使用 self.timer 变量来触发灯光吗?
def 更新程序(自身):
self.totalTime = time.time() - self.startTime
self.SetTime(self.totalTime)
self.timer = self.after(1,self.Updater)
【问题讨论】:
标签: tkinter time python-3.7