交通灯模拟中的计时器
Timer in a traffic light simulation
我目前正在做一个 Python 3.x 项目,我应该用红绿灯等做一个简单的十字路口模拟。我现在唯一的问题是我不知道任何方式来测量时间,以便用它来相应地改变交通信号灯。有什么方法可以创建一个虚拟计时器,该计时器将在模拟开始后立即开始并无限持续直到 window 关闭?我正在考虑使用 time 或 timeit 模块,但我在这里有点迷路。
提前致谢。
由于您包含了标签 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
关闭绿色并打开黄色,依此类推。由于这听起来像是一项家庭作业,因此我不会提供示例。
我目前正在做一个 Python 3.x 项目,我应该用红绿灯等做一个简单的十字路口模拟。我现在唯一的问题是我不知道任何方式来测量时间,以便用它来相应地改变交通信号灯。有什么方法可以创建一个虚拟计时器,该计时器将在模拟开始后立即开始并无限持续直到 window 关闭?我正在考虑使用 time 或 timeit 模块,但我在这里有点迷路。
提前致谢。
由于您包含了标签 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
关闭绿色并打开黄色,依此类推。由于这听起来像是一项家庭作业,因此我不会提供示例。