Advertisement
Guest User

Untitled

a guest
Nov 2nd, 2018
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.07 KB | None | 0 0
  1.  
  2. import requests
  3. import xmltodict
  4. import time
  5. from tkinter import Tk, Label, Button, Entry, CENTER
  6.  
  7. USERNAME = 'yannickwillemsen@icloud.com'
  8. PASSWORD = 'eFP6T2I2ELsO3GMErUBesuYm6uV6zr_GIOGxbDqrDitA1W4-8dM0zQ'
  9. BASIC_AUTH = (USERNAME, PASSWORD)
  10.  
  11.  
  12. def haal_vertrekinformatie_van(station):
  13.     base_url = 'http://webservices.ns.nl/ns-api-avt?station=' + station
  14.     response = requests.get(base_url, auth=BASIC_AUTH)
  15.     raw_data = response.content.decode("utf-8")
  16.     vertrekinformatie = xmltodict.parse(raw_data)
  17.  
  18.     return vertrekinformatie
  19.  
  20.  
  21. # tkinter
  22. def afsluiten(scherm):
  23.     Button(scherm, text='Afsluiten', fg="white", bg="blue", height=2, width=10,
  24.            command=scherm.destroy).place(x=18, y=10)
  25.  
  26.  
  27. def huidige_datum(scherm):
  28.     datum = time.strftime("%a, %d %b %Y")
  29.     tijd = time.strftime("%H:%M")
  30.     Label(scherm, background="#fcc917", foreground="BLACK",
  31.           font="Verdana 15", text=datum).place(x=1300, y=15)
  32.     Label(scherm, background="#fcc917", foreground="BLACK",
  33.           font=("Verdana 15", 25, "bold"), text=tijd).place(x=1350, y=45)
  34.  
  35.  
  36. def nieuwe_scherm(naam, title):
  37.     naam.attributes("-fullscreen", True)
  38.     naam.geometry('450x450+500+300')
  39.     naam.title(naam)
  40.     naam.configure(background='#fcc917')
  41.     Label(naam, text=title, font=("Helvetica", 50, "bold"),
  42.           fg="#000066", bg="#fcc917").place(relx=0.5, y=110, anchor=CENTER)
  43.  
  44.     huidige_datum(naam)
  45.     afsluiten(naam)
  46.  
  47.  
  48. startscherm = Tk()
  49. nieuwe_scherm(startscherm, 'Welkom bij NS')
  50.  
  51. amsterdam = Button(startscherm,text='Ik wil naar \n Amsterdam',fg="white",bg="blue",height=3,width=20).place(x=390,y=650)
  52. los_kaartje = Button(startscherm,text='Kopen \n los kaartje',fg="white",bg="blue",height=3,width=20).place(x=550,y=650)
  53. Ov_chipkaart = Button(startscherm,text='Kopen \n Ov-chipkaart',fg="white",bg="blue",height=3,width=20).place(x=710,y=650)
  54. buitenland = Button(startscherm,text='Ik wil naar \n het buitenland',fg="white",bg="blue",height=3,width=20).place(x=870,y=650)
  55. actuele_vertrekinformatie = Button(startscherm,text='Actuele \n vertrekinformatie',fg="white",bg="blue",height=3,width=20,
  56.                                    command=lambda: actuele_vertrekinformatie_menu()).place(x=1030,y=650)
  57.  
  58.  
  59. def actuele_vertrekinformatie_menu():
  60.     """
  61.    In het menu kunnen de gebruikers kiezen om:
  62.      1. de vertrekinformatie van de huidige station op te vragen.
  63.      2. de vertrekinformatie van een ander Nederlands station op te vragen.
  64.    """
  65.     scherm_menu = Tk()
  66.     nieuwe_scherm(scherm_menu, 'Actuele vertrekinformatie')
  67.  
  68.     zoek_veld = Entry(scherm_menu, width=25, font='Times 25')
  69.     zoek_veld.place(x=490, y=300)
  70.     Button(scherm_menu, text='Zoeken', fg='white', bg='blue', height=2, width=15,
  71.            command=lambda: (toon_actuele_vertrekinformatie(zoek_veld.get()))).place(x=890, y=300)
  72.  
  73.     Button(scherm_menu, text='Toon vertrekinformatie van de huidige station.',
  74.            fg='white', bg='blue', font=25, height=3, width=46,
  75.            command=lambda: (toon_actuele_vertrekinformatie('almere c.'))).place(x=490, y=450)
  76.  
  77.  
  78. def toon_actuele_vertrekinformatie(station):
  79.     """
  80.    Toon alle vertrekinformatie van de
  81.    gevraagd station.
  82.    """
  83.     vertrekinformatie = haal_vertrekinformatie_van(station)
  84.     vertrek_tijd = ""
  85.     eind_bestemming = ""
  86.     trein_soort = ""
  87.     vertrek_spoor = ""
  88.     try:
  89.         count = 0
  90.         for rit in vertrekinformatie['ActueleVertrekTijden']['VertrekkendeTrein']:
  91.             if count <= 30:
  92.                 vertrek_tijd += rit['VertrekTijd'].split("T")[1].split("+")[0] + " \n"
  93.                 eind_bestemming += rit['EindBestemming'] + " \n"
  94.                 trein_soort += rit['TreinSoort'] + " \n"
  95.                 vertrek_spoor += rit['VertrekSpoor']['#text'] + " \n"
  96.                 count += 1
  97.  
  98.         vertrekinfo_scherm = Tk()
  99.         nieuwe_scherm(vertrekinfo_scherm, 'Actuele vertrekinformatie')
  100.  
  101.         # column titles
  102.         Label(vertrekinfo_scherm, text='Tijd', font=('Helvetica', 16, 'bold'), fg='#000066', bg='#fcc917').place(x=460, y=185)
  103.         Label(vertrekinfo_scherm, text='Bestemming', font=('Helvetica', 16, 'bold'), fg='#000066', bg='#fcc917').place(x=633, y=185)
  104.         Label(vertrekinfo_scherm, text='Treinsoort', font=('Helvetica', 16, 'bold'), fg='#000066', bg='#fcc917').place(x=855, y=185)
  105.         Label(vertrekinfo_scherm, text='Spoor', font=('Helvetica', 16, 'bold'), fg='#000066', bg='#fcc917').place(x=1040, y=185)
  106.  
  107.         # rows
  108.         Label(vertrekinfo_scherm, text=vertrek_tijd, font=('Helvetica', 10, 'bold'), fg='#000066', bg='#fcc917').place(x=455, y=215)
  109.         Label(vertrekinfo_scherm, text=eind_bestemming, font=('Helvetica', 10, 'bold'), fg='#000066', bg='#fcc917').place(x=635, y=215)
  110.         Label(vertrekinfo_scherm, text=trein_soort, font=('Helvetica', 10, 'bold'), fg='#000066', bg='#fcc917').place(x=860, y=215)
  111.         Label(vertrekinfo_scherm, text=vertrek_spoor, font=('Helvetica', 10, 'bold'), fg='#000066', bg='#fcc917').place(x=1055, y=215)
  112.  
  113.     except:
  114.         print('De ingevoerde station is niet correct')
  115.  
  116.  
  117. startscherm.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement