Эфем не обновляет в реальном времени

У меня есть программа с картой на холсте. Когда я прокручиваю карту, она отображает на экране долготу и широту, где находится указатель мыши, обновляется в реальном времени. Кроме того, когда я двигаю мышь, на экране отображаются фазы восхода, захода солнца, восхода луны, захода луны и фазы луны. Все работает хорошо, кроме 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.

Если я запускаю программу, фаза луны всегда будет оставаться неизменной, пока я не закрою программу и не перезапущу программу.

1 ответ

Возможно, вам придется сбросить дату maploc, в противном случае его процедуры, такие как next_rising() вероятно, просто вычислит время на основе даты, полученной при его создании.

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

Вот как вы можете обновить maploc начать думать о расчетах с новой даты и времени. Удачи!

Другие вопросы по тегам