Password

Eksemplet her er meget kompliceret og noget vi har arbejdet med over lang tid.

Det kræver kendskab til import af moduler, funktioner og ikke mindst tkinter.

# -*- coding: utf-8 -*-


# import af moduler
from tkinter import *
import string
import random

# FUNKTIONER

# randompassword funktionen
# modulet string bruges
def randompassword():
    
    chars = string.ascii_uppercase + string.ascii_lowercase + string.digits + string.punctuation + string.octdigits
    size = random.randint(8, 24)
    
    return ''.join(random.choice(chars) for x in range(size))

# autogenerering af et password
def click():
    output.delete(0.0, END) # <- afslutter password
    definition = randompassword() #<- henter randompassword-funktionen
    output.insert(END, definition) #<- skriver password

# gem passwords    
def save():
    # Skriver et enkelt password og gemmer i .txt-fil

    f = open('secret_password.txt','w') #<- laver en tekst med filnavnet secret_password.txt på mappen, hvor programmet ligger. w = write
    f.write(randompassword()) #<- skriver password til filen secret_password
    f.close() #<- lukker teksten

    # Skriver og gemmer nye passwords

    f = open('passwords.txt','a') #<- Skriver filen passwords.txt og indsætter nye passwords. a = append.
    f.write("\n" + randompassword()) #<- \n laver en ny linje til hvert password fra funktionen randompassword
    f.close() #<- lukker teksten

# lukker programmet    
def close_window():
    window.destroy() # window.destroy er en funktion i tkinter som lukker et vindue.
    exit() # afslutter

# TKINTER USER INTERFACE

window = Tk() # window tildeles Tk's attributer
window.title("Password Generator") # windows titel
window.resizable(False, False) # Vinduet låses fast og kan ikke skaleres.

# øverste label i row 1, column 0, sticky=W betyder at teksten står mod vest.
Label (window, text="Enter GENERATE button to generate a random password:", font="none 12 bold") .grid(row=1, column=0, sticky=W)

# knap som generere passwords. Den henter fra funktionen click under dens command.
Button(window, text="GENERATE", width=6, command=click) .grid(row=3, column=0, sticky=W)

# tekst som udsiger vores password
Label (window, text="\nYour password:", font="none 12 bold") .grid(row=4, column=0, sticky=W)
output = Text (window, width=75, height=6, wrap=WORD, background="white")
output.grid(row=5, column=0, columnspan=2, sticky=W)

# Tekst som lader os gemme passwords på .txt fil
Label (window, text="click to save password:", font="none 12 bold") .grid(row=6, column=0, sticky=W)
Button(window, text="Save", width=14, command=save) .grid(row=7, column=0, sticky=W)

# Exit programmet
Button(window, text="Exit", width=14, command=close_window) .grid(row=7, column=0, sticky=E)

# window starter og looper indtil Exit
window.mainloop()