2016-12-16 49 views
0

我目前正在研究一個Python 3.x項目,我應該用交通信號燈做一個簡單的十字路口模擬等。我現在唯一的問題是,我不知道任何測量時間的方法,以便使用它來相應地改變交通信號燈。有沒有什麼辦法可以創建一個虛擬計時器,一旦模擬開始,虛擬計時器就會立即開始,並在窗口關閉之前無限期地進行。我正在考慮使用time或timeit模塊,但我在這裏有點失落。計時器在交通燈模擬

在此先感謝。

+0

[是](https://docs.python.org/3.6/library/time.html)。你可以先用'time.time()'或'time.clock()'得到初始時間,然後通過在窗口關閉之前調用兩者之一來計算當前模擬時間 – pbreach

+1

@pbreach爲什麼不把它作爲一個女人?僅僅作爲評論就太好了。 – MeanGreen

+0

因爲這是[重複](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

回答

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將綠色關閉,並將黃色打開,依此類推。由於這聽起來像是一項家庭作業,我不會舉例說明。

+0

非常感謝,這正是我一直在尋找的! – Jonnyolsen1