我目前正在研究一個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