def callback(): """Zorgt voor het returnen van de ingevulde tekst en gaat naar het volgende venster.""" global content content = tekstvakje.get() auth_details = ('*****@*****.**', '0yZyZgme8551xHmiqvTNBxl-iMl0xOPZ0pDQxbTN2-R5ZWQQXrvRwA') #inlogcodes NS-API try: url = 'http://webservices.ns.nl/ns-api-avt?station=' as_id = content new_url = "{}{}".format(url,as_id) actueel_as = requests.get(new_url, auth=auth_details) #actuele vertrekinformatie van de gewenste station except: window.destroy() geen_verbinding_api_engels.scherm_geen() def schrijf_actueel_as_xml(): """Schrijft een xml bestand van de actuele vertrekinformatie van de gewenste station""" bestand = open('actueel_as.xml', 'w') bestand = codecs.open('actueel_as.xml', "w", "utf-8") bestand.write(str(actueel_as.text)) bestand.close() schrijf_actueel_as_xml() def check_station_bestand(): """Schrijft de ingevoerde tekst naar een bestand zodat het later gecontroleerd kan worden.""" bestand = open('check_station.txt', 'w') bestand.write(content) bestand.close() check_station_bestand() def check_station(): """Controle voor het ingevulde station. Als er een error voor komt wordt er een error tekst weergeven.""" error = "error" bestand = open('actueel_as.xml', 'r') data = bestand.read() if error in data: window.destroy() Knop_Code_fout_engels.scherm() else: window.destroy() ander_station_in_tkinter_interface_engels.as_scherm() bestand.close() check_station()
def utrecht_scherm(): """Deze functie bevat de hele code voor het weergeven van de vertrektijden van Utrecht Centraal.""" def terug_hoofdmenu(): """Deze functie is gekoppeld aan de knop terug hoofdmenu, deze code zorgt ervoor dat het huidige scherm wordt gesloten en opent de functi create_window() van het bestand Startscherm.py""" window.destroy() Startscherm_engels.create_window() def terug(): """Deze functie is gekoppeld aan de knop_terug, en sluit het huidige scherm en start de functie scherm() uit bestand Knop_Code.py""" window.destroy() Knop_Code_engels.scherm() auth_details = ('*****@*****.**', '0yZyZgme8551xHmiqvTNBxl-iMl0xOPZ0pDQxbTN2-R5ZWQQXrvRwA') #inlogcodes NS-API try: actueel_utrecht = requests.get('http://webservices.ns.nl/ns-api-avt?station=ut', auth=auth_details) #actuele vertrekinformatie Utrecht Centraal except: geen_verbinding_api_engels.scherm_geen() def schrijf_actueel_utrecht_xml(actueel_utrecht): """schrijft een xml bestand van de actuele vertrekinformatie Station Utrecht Centraal""" bestand = open('actueel_utrecht.xml', 'w') bestand = codecs.open('actueel_utrecht.xml', "w", "utf-8") bestand.write(str(actueel_utrecht.text)) bestand.close() schrijf_actueel_utrecht_xml(actueel_utrecht) def verwerk_actueel_utrecht_xml(): """verwerkt actuele vertrekinformatie Utrecht Centraal xml naar dictionary""" bestand = open('actueel_utrecht.xml', 'r') xml_string = bestand.read() bestand.close() return xmltodict.parse(xml_string) def plaats_actueel_utrecht_op_grid(root, actueel_utrecht_dict): """print de actuele vertrekinformatie van station""" index = 0 Label(topframe, anchor = NW, bg = '#FECE22').grid(row =0, column=0, sticky=NSEW) Label(topframe, anchor = NW, bg = '#FECE22').grid(row =0, column=1, sticky=NSEW) Label(topframe, anchor = NW, bg = '#FECE22').grid(row =0, column=2, sticky=NSEW) Label(topframe, anchor = NW, bg = '#FECE22').grid(row =0, column=3, sticky=NSEW) Label(topframe, anchor = NW, bg = '#FECE22').grid(row =0, column=4, sticky=NSEW) Label(topframe, text='Time', anchor = NW, bg = 'white', fg='#003399', font = ('Ariel',10, 'bold')).grid(row=1,column=0, sticky=NSEW,) Label(topframe, text='To', anchor = NW, bg = 'white', fg='#003399', font = ('Ariel',10, 'bold')).grid(row=1,column=1, sticky=NSEW) Label(topframe, text='Track', anchor = NW, bg = 'white', fg='#003399', font = ('Ariel',10, 'bold')).grid(row=1,column=2, sticky=NSEW) Label(topframe, text='Direction', anchor = NW, bg = 'white', fg='#003399', font = ('Ariel',10, 'bold')).grid(row=1,column=3, sticky=NSEW) Label(topframe, text='Journey Details', anchor = NW, bg = 'white', fg='#003399', font = ('Ariel',10, 'bold')).grid(row=1,column=4, sticky=NSEW) result = "" for rit in actueel_utrecht_dict['ActueleVertrekTijden']['VertrekkendeTrein']: if index % 2 == 0: kleur = '#FFF5D6' else: kleur = 'white' if index > 16: break if 'RouteTekst' in actueel_utrecht_dict['ActueleVertrekTijden']['VertrekkendeTrein'][index]: routetekst = str(rit['RouteTekst']) else: routetekst = "" if '#text' in actueel_utrecht_dict['ActueleVertrekTijden']['VertrekkendeTrein'][index]['VertrekSpoor']: VertrekSpoor = (str(rit['VertrekSpoor']['#text'])) else: VertrekSpoor = "" if 'Opmerkingen' in actueel_utrecht_dict['ActueleVertrekTijden']['VertrekkendeTrein'][index]: Opmerkingen = ', ' + (str(rit['Opmerkingen']['Opmerking'])) else: Opmerkingen = "" if 'VertrekVertragingTekst' in actueel_utrecht_dict['ActueleVertrekTijden']['VertrekkendeTrein'][index]: VertrekVertragingTekst = (str(rit['VertrekVertragingTekst'])) else: VertrekVertragingTekst = "" if 'VertrekTijd' in actueel_utrecht_dict['ActueleVertrekTijden']['VertrekkendeTrein'][index]: VertrekTijd = (str(rit['VertrekTijd'][11:16])) else: VertrekTijd = "" if 'EindBestemming' in actueel_utrecht_dict['ActueleVertrekTijden']['VertrekkendeTrein'][index]: EindBestemming = (str(rit['EindBestemming'])) else: EindBestemming = "" if 'TreinSoort' in actueel_utrecht_dict['ActueleVertrekTijden']['VertrekkendeTrein'][index]: TreinSoort = (str(rit['TreinSoort'])) else: TreinSoort = "" Label(topframe, text=str(VertrekTijd) + ' ' + str(VertrekVertragingTekst), background = kleur, anchor = NW, fg='#003399', font = ('Ariel',9, 'bold')).grid(row=index+2,column=0, sticky = NSEW) Label(topframe, text=EindBestemming, bg = kleur, fg='#003399', anchor = NW, font = ('Ariel',9, 'bold')).grid(row=index+2,column=1, sticky = NSEW) Label(topframe, text=VertrekSpoor, bg = kleur, fg='#003399', anchor = NW, font = ('Ariel',9, 'bold')).grid(row=index+2,column=2, sticky=NSEW) Label(topframe, text=str(routetekst), background = kleur, fg='#003399', anchor = NW, font = ('Ariel',9, 'bold')).grid(row=index+2,column=3, sticky=NSEW) Label(topframe, text=TreinSoort + Opmerkingen, wraplength = 100, justify = LEFT, bg = kleur, fg='#003399', anchor = NW, font = ('Ariel',9, 'bold')).grid(row=index+2,column=4, sticky=NSEW) index += 1 return result actueel_utrecht_dict = verwerk_actueel_utrecht_xml() global window window = Tk() # Instellingen voor venster grootte en positie. window.withdraw() window.update_idletasks() w = 700 # Breedte van het venster. h = 500 # Hoogte van het venster. ws = window.winfo_screenwidth() # Breedte van het scherm. hs = window.winfo_screenheight() # Hoogte van het scherm. # x en y coordinaten berekenen van het venster. x = (ws/2) - (w/2) y = (hs/2) - (h/2) # Zet het venster op de goede plek met de goede grootte. window.geometry('%dx%d+%d+%d' % (w, h, x, y)) window.deiconify() window.resizable(0, 0) # Geeft het venster standaard NS geel achtergrond. window.tk_setPalette(background='#FECE22') global topframe topframe = Frame(window) topframe.pack() global bottomframe bottomframe = Frame(window, width=800, height=60) bottomframe.pack(side=BOTTOM) bottomframe.pack_propagate(0) bottomframe.place(relx=0, rely=0.88) plaats_actueel_utrecht_op_grid(window, actueel_utrecht_dict) # Standaard venster met keuze. window.title("Current departures from Station Utrecht Centraal") knop_terug_hoofdmenu = Button(bottomframe, text="Return to\nmain menu", fg="white", bg="#003399", activebackground = "white", activeforeground = "#003399", height = 2, width = 15, command = terug_hoofdmenu) knop_terug_hoofdmenu.pack() knop_terug_hoofdmenu.place(relx=0.165, rely=0.2) knop_terug = Button(bottomframe, text="Return", fg="white", bg="#003399", activebackground = "white", activeforeground = "#003399", height = 2, width = 15, command = terug) knop_terug.pack() knop_terug.place(relx=0.01, rely=0.2) window.mainloop()