Le fichier __RINEX (Receiver Independent Exchange Format) __ est simplement les données reçues du satellite par le point de référence électronique utilisé dans le système de positionnement par satellite. ...peut être En passant, je n'ai presque aucune connaissance du type d'informations à l'intérieur, donc je vais l'analyser de manière appropriée tout en pratiquant le programme.
URL de référence
Nous utiliserons tkinter, qui est la bibliothèque GUI standard qui est incluse depuis le début lors de l'installation d'Anaconda. Codons sans être trop conscients de l'orientation des objets!
analyzer.py
import tkinter as tk
from calendar import isleap
from constant import * #Module de définition propre
class Widget:
"""
Classe de génération de widgets GUI
"""
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)]
#À partir de là, le placement des widgets de bouton, etc.
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 sinon une année humide
else:
self.widget_dict[ilist[0]].set(ilist[1][-1]) #366 pour une année humide
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", "Sortie de message\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):
"""
Décrivez le comportement lorsque vous appuyez sur le bouton
"""
#Sortie du message dans la zone de texte
if int(self.widget_dict["START_DOY"].get()) > int(self.widget_dict["END_DOY"].get()):
# START_FIN que DOY_Si DOY vient en premier
self.widget_dict["TEXT"].insert("end", "START_FIN que DOY_La date de DOY est en avance\n")
elif not isleap(int(self.widget_dict["YEAR"].get())):
#Si ce n'est pas une année humide
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}Il n'y a pas 366 jours dans l'année\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")
#Description requise lors du démarrage d'un fichier Python en double-cliquant
if __name__ == "__main__":
try:
Widget() #Interface de démarrage
print("\n Terminaison normale")
except Exception as _e:
print(_e, type(_e))
print("\n Terminaison anormale")
Le traitement de l'année humide était sobre et gênant Ou plutôt, il y avait une fonction qui pouvait déterminer si c'était une année humide
constant.py
"""Module de définition constante"""
YEAR_LIST = ["2018", "2019", "2020", "2021", "2022"] #Définition pour 5 ans pour le moment
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"] #Numéro de station du point de référence électronique...Définissons celui de la préfecture de Saitama pour le moment
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])] #Double liste
Lors de la création d'un module qui définit des constantes Il semble qu'il existe actuellement 11 points de référence électroniques dans la préfecture de Saitama.
Hmm, ils sont fatigués
Le tkinter
ʻOption Menu` est appelé une zone de liste ou une zone de liste déroulante.
J'ai une interface graphique simple pour le moment La prochaine fois, je voudrais implémenter autour de l'acquisition de fichiers RINEX. J'ai également ressenti la facilité d'utilisation de PyCharm. C'est facile à déboguer et il est bon de vérifier la syntaxe et les conventions PEP8 sans autorisation.
: arrow_backward: Dernier article | [Article suivant]: arrow_forward:
Recommended Posts