我目前正在研究一个Python 3.x项目,我应该用交通信号灯做一个简单的十字路口模拟等。我现在唯一的问题是,我不知道任何测量时间的方法,以便使用它来相应地改变交通信号灯。有没有什么办法可以创建一个虚拟计时器,一旦模拟开始,虚拟计时器就会立即开始,并在窗口关闭之前无限期地进行。我正在考虑使用time或timeit模块,但我在这里有点失落。计时器在交通灯模拟
在此先感谢。
我目前正在研究一个Python 3.x项目,我应该用交通信号灯做一个简单的十字路口模拟等。我现在唯一的问题是,我不知道任何测量时间的方法,以便使用它来相应地改变交通信号灯。有没有什么办法可以创建一个虚拟计时器,一旦模拟开始,虚拟计时器就会立即开始,并在窗口关闭之前无限期地进行。我正在考虑使用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
将绿色关闭,并将黄色打开,依此类推。由于这听起来像是一项家庭作业,我不会举例说明。
非常感谢,这正是我一直在寻找的! – Jonnyolsen1
[是](https://docs.python.org/3.6/library/time.html)。你可以先用'time.time()'或'time.clock()'得到初始时间,然后通过在窗口关闭之前调用两者之一来计算当前模拟时间 – pbreach
@pbreach为什么不把它作为一个女人?仅仅作为评论就太好了。 – MeanGreen
因为这是[重复](http://stackoverflow.com/questions/415511/how-to-get-current-time-in-python),[重复](http://stackoverflow.com/ (http://stackoverflow.com/questions/3620943/measuring-elapsed-time-with-the-time-module)的问题/ 7370801 /测量时间在python中)你明白了。 – pbreach