Ephem没有更新实时

时间:2017-04-19 15:25:11

标签: python-3.x pyephem

我有一个在画布上有地图的程序。当我滚动地图时,它会在屏幕上显示鼠标指针所在位置的经度和纬度,并实时更新。同样,当我移动鼠标时,它显示我在屏幕上的日出,日落,月出,月亮和月相。一切都很好,除了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。

如果我运行该程序,月相将始终保持不变,直到我关闭程序并重新启动程序。

1 个答案:

答案 0 :(得分:0)

您可能需要重置maploc的日期,否则其next_rising()之类的例程可能只会根据您创建日期时的日期计算时间。

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

这就是你可以更新maploc以开始考虑新日期和时间计算的方法。祝你好运!