__RINEX-Datei (Receiver Independent Exchange Format) __ sind einfach die Daten, die vom Satelliten vom elektronischen Referenzpunkt empfangen werden, der im Satellitenpositionierungssystem verwendet wird. ...vielleicht Übrigens weiß ich fast nicht, welche Art von Informationen darin enthalten sind, daher werde ich sie angemessen analysieren und gleichzeitig das Programm üben.
Referenz-URL
Wir werden tkinter verwenden, die Standard-GUI-Bibliothek, die von Anfang an enthalten ist, wenn Anaconda installiert wird. Lassen Sie uns codieren, ohne uns der Objektorientierung zu bewusst zu sein!
analyzer.py
import tkinter as tk
from calendar import isleap
from constant import * #Eigenes Definitionsmodul
class Widget:
"""
GUI-Widget-Generierungsklasse
"""
def __init__(self):
self.root = tk.Tk()
self.root.title('RINEX Analyzer')
self.root.columnconfigure(0, weight=1)
self.flame = tk.Frame(self.root)
self.flame.grid(row=0, column=0)
[self.flame.columnconfigure(x, weight=1) for x in range(4)]
#Ab hier die Platzierung von Schaltflächen-Widgets usw.
self.widget_dict = {}
for cnt,ilist in enumerate(OPTION_LIST):
tk.Label(self.flame, text=ilist[0].replace("_","\n")).grid(row=0, column=cnt)
self.widget_dict[ilist[0]] = tk.StringVar()
if "END" in ilist[0]:
if not isleap(int(self.widget_dict["YEAR"].get())):
self.widget_dict[ilist[0]].set(ilist[1][-2]) #365 wenn nicht ein feuchtes Jahr
else:
self.widget_dict[ilist[0]].set(ilist[1][-1]) #366 für ein feuchtes Jahr
else:
self.widget_dict[ilist[0]].set(ilist[1][0])
tk.OptionMenu(self.flame, self.widget_dict[ilist[0]], *ilist[1]).grid(row=1, column=cnt)
self.widget_dict["GET_RINEX"] = tk.Button(self.flame, text="GET RINEX", bg="SkyBlue")
self.widget_dict["GET_RINEX"].grid(row=2, column=3, padx=1, pady=1)
self.widget_dict["GET_RINEX"].config(command=lambda: self.button_event())
self.widget_dict["TEXT"] = tk.Text(self.flame, width=40, height=10)
self.widget_dict["TEXT"].grid(row=3, column=0, columnspan=4, padx=5, pady=5)
self.widget_dict["TEXT"].insert("end", "Nachrichtenausgabe\n")
self.widget_dict["CANVAS"] = tk.Canvas(self.flame, width=50, height=50)
self.widget_dict["CANVAS"].grid(row=4, column=0, columnspan=4)
self.root.mainloop()
def button_event(self):
"""
Beschreiben Sie das Verhalten beim Drücken der Taste
"""
#Nachrichtenausgabe in Textfeld
if int(self.widget_dict["START_DOY"].get()) > int(self.widget_dict["END_DOY"].get()):
# START_ENDE als DOY_Wenn DOY an erster Stelle steht
self.widget_dict["TEXT"].insert("end", "START_ENDE als DOY_Das DOY-Datum steht an erster Stelle\n")
elif not isleap(int(self.widget_dict["YEAR"].get())):
#Wenn es kein feuchtes Jahr ist
if int(self.widget_dict["START_DOY"].get()) == 366 or int(self.widget_dict["END_DOY"].get()) == 366:
self.widget_dict["TEXT"].insert("end", "{0}Es gibt keine 366 Tage im Jahr\n".format(self.widget_dict["YEAR"].get()))
else:
[self.widget_dict["TEXT"].insert("end", "{0}:{1}\n".format(x, self.widget_dict[x].get())) for x in LABEL_LIST]
else:
[self.widget_dict["TEXT"].insert("end", "{0}:{1}\n".format(x, self.widget_dict[x].get())) for x in LABEL_LIST]
self.widget_dict["TEXT"].see("end")
#Beschreibung erforderlich, wenn Sie eine Python-Datei durch Doppelklicken starten
if __name__ == "__main__":
try:
Widget() #Schnittstelle starten
print("\n Normale Beendigung")
except Exception as _e:
print(_e, type(_e))
print("\n Abnormale Beendigung")
Die Verarbeitung des feuchten Jahres war nüchtern und mühsam Oder besser gesagt, es gab eine Funktion, die bestimmen konnte, ob es ein feuchtes Jahr war
constant.py
"""Modul für konstante Definition"""
YEAR_LIST = ["2018", "2019", "2020", "2021", "2022"] #Definition für 5 Jahre vorerst
DOY_LIST = [str(x).zfill(3) for x in range(1, 367)] # Day of year
ERP_LIST = ["0958", "3005", "3007", "3008", "3011",
"3013","0223", "0224", "0753", "0754", "0755"] #Stationsnummer des elektronischen Referenzpunkts...Definieren wir vorerst die in der Präfektur Saitama
LABEL_LIST = ["YEAR", "START_DOY", "END_DOY", "ERP"]
OPTION_LIST = [[LABEL_LIST[cnt], i] for cnt,i in enumerate([YEAR_LIST, DOY_LIST, DOY_LIST, ERP_LIST])] #Doppelte Liste
Beim Erstellen eines Moduls, das Konstanten definiert Es scheint, dass es derzeit 11 elektronische Referenzpunkte in der Präfektur Saitama gibt.
Hmm, müde Sie Das "Optionsmenü" von "tkinter" wird als Listenfeld oder Kombinationsfeld bezeichnet.
Ich habe vorerst eine einfache GUI Das nächste Mal möchte ich rund um die Erfassung von RINEX-Dateien implementieren. Ich habe auch die Benutzerfreundlichkeit von PyCharm gespürt. Es ist einfach zu debuggen und es fühlt sich gut an, die Syntax und die PEP8-Konventionen ohne Erlaubnis zu überprüfen.
: arrow_backward: Letzter Artikel | [Nächster Artikel]: arrow_forward:
Recommended Posts