Ø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()