Oppg-5-5

Øvelse 5 – Oppgave 5

GUI og filbehandling

I denne oppgaven skal du lage et brukergrensesnitt (GUI) som lar brukeren skrive inn et navn i én widget og en adresse i en annen widget. Dette skal skrives til slutten av en fil når brukeren trykker på en knapp med navn «Send inn». Skriv inn 5 navn og adresser og print innholdet av filen til konsoll.

Løsningsforslag:



## Oppgave 5 svar
import tkinter

# Hent infoen som blir skrevet inn og send til filen
def getInfoInp():
    peopleList = [] # Tøm lista for hver gang funksjonen kalles
    name = nameEntry.get() # Hent info om navn fra navn-widget
    adress = adressEntry.get() # Hent info om adresse fra adresse-widget

    peopleList.append(str(name+', ')) #
    peopleList.append(str(adress+'\n'))

    for i in peopleList: # Send infoen til funksjonen som skriver til filen
        printToFile(i)

# Funksjonen som skriver info til filen
def printToFile(info):

    file = open('people.txt', 'a+')

    file.write(info)

    file.close()

# Fjern infoen fra widget så man kan skrive ny og kall funksjonen for å hente infoen som er lagt inn
def newPerson():
    nameEntry.delete(0, 'end')
    adressEntry.delete(0,'end')

    return getFileCont()

# Les infoen fra filen og print den
def getFileCont():
    file = open('people.txt', 'r')

    cont = file.readlines()

    print(cont)

    file.close()


# Start et lerret
mainWindow = tkinter.Tk()

# Definer widget for navn
nameLabel = tkinter.Label(mainWindow, text='Navn: ')
nameEntry = tkinter.Entry(mainWindow, width=10)
nameLabel.pack()
nameEntry.pack()

# Definer widget for adresse
adressLabel = tkinter.Label(mainWindow, text = 'Adresse: ')
adressEntry = tkinter.Entry(mainWindow, width = 10)
adressLabel.pack()
adressEntry.pack()

# Definer knapp for "Send inn"
sendBtn = tkinter.Button(mainWindow, text = 'Send', command = getInfoInp) # Kaller funk for å legge info i lista
sendBtn.pack()

# Definer knapp for å kunne skrive ny input
newBtn = tkinter.Button(mainWindow,text = 'New person', command = newPerson) # Kall funk for å legge inn ny person
newBtn.pack()

tkinter.mainloop()