交通信号灯模拟中的定时器

时间:2016-12-16 14:45:50

标签: python time tkinter tkinter-canvas timeit

我目前正在开发一个Python 3.x项目,我应该用交通灯等进行简单的十字路口模拟。我现在唯一的问题是我不知道有任何方法测量时间,以便用它来相应地改变交通信号灯。是否有任何方法可以创建一个虚拟计时器,它将在模拟开始后立即开始并无限循环直到窗口关闭?我考虑使用时间或时间模块,但我在这里有点迷失。

提前致谢。

1 个答案:

答案 0 :(得分:1)

由于您添加了标记tkinter,因此可以使用特定于tkinter的解决方案。您可以使用每个小部件上可用的after方法来安排将来发生的事件。

在最简单的情况下,您可以拥有一个在给定间隔内运行其他函数的函数。例如:

import tkinter as tk

def run_periodically(func, ms):
    func()
    root.after(ms, run_periodically, func, ms)

def tick():
    global count
    count += 1
    tick_label.configure(text="count: %d" % count)


count = 0
root = tk.Tk()
tick_label = tk.Label(root, text="")
tick_label.pack(padx=20, pady=20)

run_periodically(tick, 1000)

root.mainloop()

当然,您也可以根据需要安排作业,而不是按计划调用。例如,当指示灯变为红色时,您可以使用after将其关闭并打开绿色。然后,您可以使用after关闭绿色并打开黄色,依此类推。由于这听起来像是家庭作业,我不会提供一个例子。