2017-04-19 2 views
1

Ich habe ein Programm mit einer Karte auf einer Leinwand. Wenn ich über die Karte scrolle, wird auf dem Bildschirm die geografische Länge und Breite des Mauszeigers angezeigt, aktualisiert in Echtzeit. Auch wenn ich die Maus bewege, zeige ich Sonnenaufgang, Sonnenuntergang, Mondaufgang, Monduntergang und Mondphase an, wo ich auf dem Bildschirm bin. Alles funktioniert gut außer Ephem aktualisiert offensichtlich nicht in Echtzeit.Ephem aktualisiert nicht in Echtzeit

Dies ist der Ephem-spezifische Teil des Codes, der jedes Mal ausgeführt wird, wenn die Maus bewegt wird.

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(' ') 

Ich würde denken, die mn.compute (self.maploc) laufen würde eine vollständige Aktualisierung der Kartenkoordinaten tun, aber es funktioniert nicht. Zugegeben gestern, als ich anfing, an dieser Idee herumzubasteln, bemerkte ich, dass es auch keine Live-Aktualisierung mit den Sonnenaufgangzeiten gab.

Wie bekomme ich Echtzeit-Updates oder kann ich mit Ephem.

Wenn ich das Programm starte, bleibt die Mondphase immer gleich, bis ich das Programm schließe und das Programm neu starte.

Antwort

0

Möglicherweise müssen Sie das Datum des Maplocs zurücksetzen, ansonsten werden seine Routinen wie next_rising() wahrscheinlich nur die Zeiten berechnen, die auf dem Datum basieren, an dem es erstellt wurde.

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

Das ist, wie Sie die maploc aktualisieren können denken über Berechnungen von einem neuen Datum und Uhrzeit zu starten. Viel Glück!

Verwandte Themen