我目前正在开发一个Python 3.x项目,我应该用交通灯等进行简单的十字路口模拟。我现在唯一的问题是我不知道有任何方法测量时间,以便用它来相应地改变交通信号灯。是否有任何方法可以创建一个虚拟计时器,它将在模拟开始后立即开始并无限循环直到窗口关闭?我考虑使用时间或时间模块,但我在这里有点迷失。
提前致谢。
答案 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
关闭绿色并打开黄色,依此类推。由于这听起来像是家庭作业,我不会提供一个例子。