2017-04-19 72 views
1

我有一個帶有地圖的程序在畫布上。當我在地圖上滾動時,它會在屏幕上顯示鼠標指針所在位置的經度和緯度,並實時更新。同樣,當我移動鼠標時,它會顯示我在屏幕上的日出,日落,月出,月落和月相。一切工作正常,除了ephem顯然不更新實時。Ephem沒有實時更新

這是ephem每次移動鼠標時運行的代碼的特定部分。

self.maploc.lat, self.maploc.lon = str(py), str(px) 
sr = str(self.maploc.next_rising(ephem.Sun() 
ss = str(self.maploc.next_setting(ephem.Sun())) 
snr = sr.split(' ') 
sns = ss.split(' ') 
self.maploc.lat, self.maploc.lon = str(py), str(px) 
mr = str(self.maploc.next_rising(ephem.Moon())) 
ms = str(self.maploc.next_setting(ephem.Moon())) 
mn = ephem.Moon() 
mn.compute(self.maploc) 
mnr = mr.split(' ') 
mns = ms.split(' ') 

我想運行mn.compute(self.maploc)會做地圖座標的完整更新,但事實並非如此。昨天,當我開始修改這個想法時,我注意到它似乎沒有與日出時間一起實時更新。

我該如何獲得實時更新,或者我可以使用ephem。

如果我運行程序,月相將一直保持不變,直到我關閉程序並重新啓動程序。

回答

0

您可能需要重置maploc的日期,否則其例程如next_rising()可能只是基於創建日期時計算時間。

from ephem import now 
... 
self.maploc.date = now() 

這就是你如何更新maploc開始考慮從一個新的日期和時間計算。祝你好運!