def providerfilms(providernaam): """ returnt een lijst met alle films die een gebruiker in bezit heeft de doctest werkt alleen op 30-10-2015 omdat de uitslagen afhankelijk zijn van de datum >>> providerfilms("RTL8") ['Penthouse North', 'Black Forest'] >>> providerfilms("SBS9") ['Observe and Report', 'Beerfest'] >>> providerfilms("BBC1") ['Hollywood Homicide'] >>> providerfilms("FOX") ['The Frighteners'] >>> providerfilms("CANVAS") [] """ TB.schrijf_xml(TB.response) TB.films_dict = TB.verwerk_xml() global filmnamen filmnamen = TB.print_filmnamen(TB.films_dict) list = [] filmnamenlijst = [] nummer = 0 for i in filmnamen["provider"]: if i == providernaam: # print(nummer) list.append(nummer) nummer += 1 for provider in list: # print(filmnamen["titel"][provider]) filmnamenlijst.append(filmnamen["titel"][provider]) # print(filmnamen["provider"]) return filmnamenlijst
def providerscreen(): window.destroy() rommel.destroy() provscreen = tk.Tk() provscreen.geometry("310x300") provscreen.title("Chill-Flix") provscreen.wm_iconbitmap("favicon.ico") # de logo van het programma provscreen.configure(background=background) button = {} TB.schrijf_xml(TB.response) TB.films_dict = TB.verwerk_xml() filmnamen = TB.print_filmnamen(TB.films_dict) # filmnamen geeft alle huidige films in list print(filmnamen) # print de list met alle filmnamen rij = 0 for i in filmnamen: # http://stackoverflow.com/questions/7300041/tkinter-create-labels-and-entrys-dynamically lb = tk.Button(provscreen, text=i, bg=background, fg=textkleur, activeforeground=activeforegroundbutton, activebackground=activebackgroundbutton, width=len(max(filmnamen, key=len)), command=lambda piet=i: huurdersfilm(piet)) button[i] = lb # button[i].grid(row=rij, column=0) # for i in filmnamen: button[i].pack() rij += 1 provscreen.mainloop()
def login(method): """ checkt de login met de database """ if TB.loginPogingen > 0: global user if method == 1: user = username.get().lower() pw = password.get() accesgranted = TB.login(user, pw) else: user = username.get() pw = password.get() accesgranted = TB.login2(user, pw) if accesgranted is True: TB.gebruiker = user # bron: http://stackoverflow.com/questions/10817917/how-to-disable-input-to-a-text-widget-but-allow-programatic-input print("[DEBUG] accesgranted was gelijk aan: "+str(accesgranted)) username.destroy() # destroy window password.destroy() bsignin.destroy() attemptsLeft.destroy() label.destroy() passlabel.destroy() bsignup.destroy() warning.destroy() window.configure(background="black") label2 = tk.Label(window, text='Login succesful, redirecting.', fg=textkleur, bg="black") label2.pack() photo2 = tk.PhotoImage(file="loading.gif") # TODO:laad alleen eerste frame, is animated GIF w = tk.Label(window, image=photo2, borderwidth="0") w.image = photo2 w.pack() # TODO: hier de code om naar het volgende scherm te gaan waar films worden gedisplayed (nieuwe def) if method == 1: goback(2) # TODO: wanneer geactiveerd slaat hij de accesgranted screen over else: providerscreen() return True else: TB.loginPogingen -= 1 attemptsLeft['text'] = "Attempts left: "+str(TB.loginPogingen) warning['text'] = "Login failed, invalid username or password." if TB.loginPogingen == 0: warning['text'] = "Too many failed login attempts." username.configure(state="disabled") password.configure(state="disabled") bsignin.configure(state="disabled") bsignup.configure(state="disabled") baanvoerder.configure(state="disabled") photo.configure(file="blocked.gif") # kan wel beter dan dit maar het idee is er return False else: warning['text'] = "Too many failed login attempts." return False
def filmhuren(film): """ geeft popup als je een film huurd """ filmnummer = filmnamen["titel"].index(film) t = (str(filmnamen["titel"][filmnummer])) p = (str(filmnamen["provider"][filmnummer])) print("[DEBUG] gebruiker = "+TB.gebruiker) TB.kaartjeKopen(p, t, TB.gebruiker, TB.generateCode()) tk.messagebox.showinfo(film + " huren", "U heeft zojuist de film: " + film + " gehuurd.")
def createaccount(): """ checkt de account creation input voor invalide tekst """ readytowrite = False user = ename.get().lower() pw = epassword.get() email = eemail.get().lower() provider = comboprovider.get() gender = "NA" # TODO: gender ophalen uit radiobutton # velden resetten naar defaultcolor white ename['bg'] = "white" epassword['bg'] = "white" eemail['bg'] = "white" combostyle.theme_use('regular') ingebruik = TB.createLogin(user, pw, email, provider, gender, False) # ^SCHRIJFT NIET -- laatste parameter geeft aan alleen data ophalen print("[DEBUG] login: "******"\n", "pw: "+pw+"\n", "email: "+email+"\n", "provider: "+provider+"\n", "ingebruik: "+str(ingebruik)) # , gender --- hoe haal ik info van radiobutton @Debug if ingebruik is False: readytowrite = True if ("." not in email) or ("@" not in email) or ("," in email): # or (len(pw) < 5): eemail['bg'] = "red" readytowrite = False if ("," in pw) or (pw == ""): # or (len(pw) < 4): epassword['bg'] = "red" readytowrite = False if (provider == "") or ("," in provider): combostyle.theme_use('red') readytowrite = False if (ingebruik is True) or (user == "") or ("," in user): # ingebruik returnt inUse van createLogin ename['bg'] = "red" readytowrite = False # TODO: Errortextlabel + verkeerde input roodmaken if ingebruik is False and readytowrite is True: TB.createLogin(user, pw, email, provider, gender, True) # True dus schrijven naar login.csv ingebruik = True print("[DEBUG]: Account created - gender: "+str(gender)) goback(1) # print("test"+radiogender1.selection_get()) # TODO: maak redirect window naar login + errors uit goback(1) halen return ingebruik
def filmscreen(): """ Laat alle films zien d.m.v. dynamic buttons, hier kan je naar de site gaan of een film huren """ afmeting = correctwindowsize(2) global filmwindow filmwindow = tkinter.Tk() filmwindow.geometry(afmeting) filmwindow.title("Chill-Flix") # http://stackoverflow.com/questions/2395431/using-tkinter-in-python-to-edit-the-title-bar filmwindow.wm_iconbitmap("favicon.ico") # de logo van het programma filmwindow.configure(background=background) button = {} buttonkopen = {} TB.schrijf_xml(TB.response) TB.films_dict = TB.verwerk_xml() global filmnamen filmnamen = TB.print_filmnamen(TB.films_dict) # filmnamen geeft alle huidige films weer in een list rij = 0 for i in filmnamen["titel"]: # http://stackoverflow.com/questions/7300041/tkinter-create-labels-and-entrys-dynamically lb = tk.Button(filmwindow, text=(i + " (bekijk inhoud)"), bg=background, activeforeground=activeforegroundbutton, activebackground=activebackgroundbutton, fg=textkleur, width=17 + len(max(filmnamen["titel"], key=len)), command=lambda piet=i: filmdescription(piet)) # http://www.tutorialspoint.com/python/tk_button.htm voor de button arguments button[i] = lb button[i].grid(row=rij, column=0) lb2 = tk.Button(filmwindow, text=(i + " Huren"), bg=background, activeforeground=activeforegroundbutton, activebackground=activebackgroundbutton, fg=textkleur, width=7 + len(max(filmnamen["titel"], key=len)), command=lambda piet=i: filmhuren(piet)) buttonkopen[i] = lb2 # http://stackoverflow.com/questions/11504571/clickable-tkinter-labels buttonkopen[i].grid(row=rij, column=1) # voor de dynamische button breedte: http://stackoverflow.com/questions/873327/pythons-most-efficient-way-to-choose-longest-string-in-list # TODO: een goede layout op het scherm krijgen (met .grid werkt column argument niet?) rij += 1 bgoback = tk.Button(filmwindow, text="Go Back", command=lambda: goback(3), bg=background, fg=textkleur, activebackground=activebackgroundbutton, activeforeground=activeforegroundbutton) bgoback.grid(row=(rij + 1), column=0) bfilmkijken = tk.Button(filmwindow, text="Film kijken", command=lambda: filmkijken(), bg=background, fg=textkleur, activebackground=activebackgroundbutton, activeforeground=activeforegroundbutton) bfilmkijken.grid(row=(rij+1), column=1) filmwindow.mainloop()
def huurdersfilm(film): """ Hier worden de huurders van de films bekeken """ global mijnfilm mijnfilm = film afmeting = correctwindowsize(3) useroverzicht = tk.Tk() useroverzicht.geometry(afmeting) useroverzicht.title("Chill-Flix") useroverzicht.wm_iconbitmap("favicon.ico") # de logo van het programma useroverzicht.configure(background=background) lfilm = tk.Label(useroverzicht, text="Naam: "+film+ "\nin gebruik door:", fg=textkleur, bg=background) lfilm.pack() users = TB.aanbiederInfo(film) # TODO: hier komen de users van de film userlabel = {} for i in users: lb3 = tk.Label(useroverzicht, text=i, fg="#44FF66", bg=background) userlabel[i] = lb3 userlabel[i].pack() bgoback = tk.Button(useroverzicht, text="Go Back", command=lambda: useroverzicht.destroy(), bg=background, fg=textkleur, activeforeground=activeforegroundbutton, activebackground=activebackgroundbutton) bgoback.pack() useroverzicht.mainloop()
def filmscreen(): filmwindow = tkinter.Tk() filmwindow.geometry("300x500") filmwindow.title("Chill-Flix") filmwindow.wm_iconbitmap("favicon.ico") # het logo van het programma filmwindow.configure(background=background) # names = ["kees", "philippe", "dylan"] button = {} buttonkopen = {} TB.schrijf_xml(TB.response) TB.films_dict = TB.verwerk_xml() filmnamen = TB.print_filmnamen(TB.films_dict) # filmnamen geeft alle huidige films in list print(filmnamen) # print de list met alle filmnamen rij = 0 for i in filmnamen: # http://stackoverflow.com/questions/7300041/tkinter-create-labels-and-entrys-dynamically lb = tk.Button(filmwindow, text=i + " (bekijk inhoud)", bg=background, activeforeground=activeforegroundbutton, activebackground=activebackgroundbutton, fg=textkleur, width=17 + len(max(filmnamen, key=len)), command=lambda piet=i: filmdescription(piet)) button[i] = lb # label[i].bind("<Button-1>",command=(lambda filmdescription("a"))) # http://stackoverflow.com/questions/11504571/clickable-tkinter-labels # button[i].grid(row=rij, column=0) lb2 = tk.Button(filmwindow, text=i + " Huren", bg=background, activeforeground=activeforegroundbutton, activebackground=activebackgroundbutton, fg=textkleur, width=7 + len(max(filmnamen, key=len)), command=lambda piet=i: filmdescription(piet)) buttonkopen[i] = lb2 # http://stackoverflow.com/questions/11504571/clickable-tkinter-labels # button[i].grid(row=rij, column=1) # voor de dynamische button breedte: http://stackoverflow.com/questions/873327/pythons-most-efficient-way-to-choose-longest-string-in-list # for i in filmnamen: buttonkopen[i].pack() # TODO: een goede layout op het scherm krijgen (met .grid werkt column argument niet?) button[i].pack() rij += 1 filmwindow.mainloop()
def providerscreen(): """ In dit scherm krijgen de providers de films te zien die zij zelf aanvoeren, als ze op een film drukken kunnen ze de huurders zien """ window.destroy() rommel.destroy() TB.schrijf_xml(TB.response) TB.films_dict = TB.verwerk_xml() filmnamen = TB.print_filmnamen(TB.films_dict) # filmnamen geeft alle huidige films in list afmeting = correctwindowsize(1) # print(filmnamen) # print de dictionaries met alle filmnamen global provscreen provscreen = tk.Tk() provscreen.geometry(afmeting) provscreen.title("Chill-Flix") provscreen.wm_iconbitmap("favicon.ico") # de logo van het programma provscreen.configure(background=background) button = {} rij = 0 providernaam = TB.gebruiker for i in providerfilms(providernaam): # http://stackoverflow.com/questions/7300041/tkinter-create-labels-and-entrys-dynamically lb = tk.Button(provscreen, text=i, bg=background, fg=textkleur, activeforeground=activeforegroundbutton, activebackground=activebackgroundbutton, width=len(max(providerfilms(providernaam), key=len)), command=lambda piet=i: huurdersfilm(piet)) button[i] = lb # button[i].grid(row=rij, column=0) # for i in filmnamen: button[i].pack() rij += 1 bgoback = tk.Button(provscreen, text="Go Back", command=lambda: goback(4), bg=background, fg=textkleur, activeforeground=activeforegroundbutton, activebackground=activebackgroundbutton) bgoback.pack(side="left") provscreen.mainloop()
def filmkijken(): """ Dit scherm laat zien welke films er gehuurt zijn door de user, zodat ze deze kunnen bekijken """ bioscoop = tk.Tk() bioscoop.geometry("200x200") bioscoop.title("Chill-Flix") bioscoop.wm_iconbitmap("favicon.ico") # de logo van het programma bioscoop.configure(background=background) availablefilms = TB.userownedfilms(TB.gebruiker) button = {} for i in availablefilms: # http://stackoverflow.com/questions/7300041/tkinter-create-labels-and-entrys-dynamically lb = tk.Button(bioscoop, text=(i), bg=background, activeforeground=activeforegroundbutton, activebackground=activebackgroundbutton, fg=textkleur, width=17 + len(max(availablefilms, key=len)), command=lambda piet=i: tk.messagebox.showinfo(piet, "u kunt nu de film: " + piet + " kijken") and bioscoop.destroy()) button[i] = lb button[i].pack() bgoback = tk.Button(bioscoop, text="Go Back", command=lambda: bioscoop.destroy(), bg=background, fg=textkleur, activebackground=activebackgroundbutton, activeforeground=activeforegroundbutton) bgoback.pack(side="left") bioscoop.mainloop()
def correctwindowsize(input): """ Returnt een window size gebaseerd op berekeningen ivm grote van elementen """ TB.schrijf_xml(TB.response) TB.films_dict = TB.verwerk_xml() filmnamen = TB.print_filmnamen(TB.films_dict) # filmnamen geeft alle huidige films in list aantal = 0 for i in filmnamen['titel']: aantal = aantal + 1 if input == 1: lengte = len(providerfilms(TB.gebruiker)) afmeting = ("310x"+str(40+26*lengte)) # 26 = approx 1 button, 40 = extra voor go back button elif input == 2: afmeting = ("600x"+str(40+26*aantal)) # 26 = approx 1 button, 40 = extra voor go back button elif input == 3: TB.aanbiederInfo(mijnfilm) if TB.aantalgebruikers < 30: afmeting = ("310x"+str(22*(TB.aantalgebruikers+3))) # 26 = approx 1 button, 40 = extra voor go back button else: afmeting = ("310x1000") else: afmeting = ("310x300") # default afmeting return afmeting
import Thuisbioscoop as TB TB.schrijf_xml(TB.response) # TB.films_dict = TB.verwerk_xml() global filmnamen filmnamen = TB.print_filmnamen(TB.films_dict) naam = "RTL8" list = [] filmnamenlijst = [] nummer = 0 for i in filmnamen["provider"]: if i == naam: print(nummer) list.append(nummer) nummer += 1 for provider in list: print(filmnamen["titel"][provider]) filmnamenlijst.append(filmnamen["titel"][provider]) print(filmnamen["provider"]) return filmnamenlijst
highlightbuttoncolorthingy = "#6B99A0" def filmscreen(): filmwindow = tkinter.Tk() filmwindow.geometry(windowsize) filmwindow.title("Chill-Flix") filmwindow.wm_iconbitmap("favicon.ico") # het logo van het programma filmwindow.configure(background=background) names = ["kees", "philippe", "dylan"] button = {} for i in names: # http://stackoverflow.com/questions/7300041/tkinter-create-labels-and-entrys-dynamically lb = tk.Button(filmwindow, text=i, command=lambda piet=i:filmdescription(piet), bg=background, fg=textkleur) button[i] = lb # label[i].bind("<Button-1>",command=(lambda filmdescription("a"))) # http://stackoverflow.com/questions/11504571/clickable-tkinter-labels hoort filmdescription op te roepen wanneer je drukt op de label button[i].pack() filmwindow.mainloop() def filmdescription(film): print("hoi" + film) filmscreen() TB.schrijf_xml(TB.response) TB.films_dict = TB.verwerk_xml() filmNamen = TB.print_filmnamen(TB.films_dict) # filmNamen geeft alle huidige films in list print(filmNamen) # print de list met alle filmnamen for i in filmNamen: # print films 1 voor 1 print(str(i)) # TODO: hier code om in tkinter te zetten
tk = tkinter global background background = "#153341" global textkleur textkleur = "#51dfd4" global windowsize windowsize = "350x300" global titelimage titleimage = "deze.gif" global activebackgroundbutton activebackgroundbutton = "#245A69" global activeforegroundbutton activeforegroundbutton = "#48ABAA" global highlightbuttoncolorthingy highlightbuttoncolorthingy = "#6B99A0" TB.preparelogin2() def filmscreen(): """ Laat alle films zien d.m.v. dynamic buttons, hier kan je naar de site gaan of een film huren """ afmeting = correctwindowsize(2) global filmwindow filmwindow = tkinter.Tk() filmwindow.geometry(afmeting) filmwindow.title("Chill-Flix") # http://stackoverflow.com/questions/2395431/using-tkinter-in-python-to-edit-the-title-bar filmwindow.wm_iconbitmap("favicon.ico") # de logo van het programma filmwindow.configure(background=background) button = {} buttonkopen = {}