Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!usr/bin/env python
- #-*- coding: utf-8 -*-
- #Importerar shelve för att sedan kunna spara till en fil.
- import shelve
- import pymysql
- from tkinter import *
- import tkinter.messagebox as MsgBox
- personinfolista = []
- db = pymysql.connect(host="localhost", user="root", password="", db="personinfo")
- try:
- q = shelve.open("personinfolistan")
- infolist = q["personinfo"]
- q.close()
- except:
- pass
- #skapar en klass för en person och dess parametrar
- class person ():
- def __init__(self, förnamn, efternamn, telefonnummer, personnummer, adress, postnummer, stad):
- self.__förnamn = förnamn
- self.__efternamn = efternamn
- self.__telefonnummer = telefonnummer
- self.__personnummer = personnummer
- self.__adress = adress
- self.__postnummer = postnummer
- self.__stad = stad
- def getförnamn(self):
- return self.__förnamn
- def setförnamn(self, förnamn):
- if förnamn == "":
- self.__förnamn = "None"
- else:
- self.__förnamn = förnamn
- def getefternamn(self):
- return self.__efternamn
- def setefternamn(self, efternamn):
- if efternamn == "":
- self.__efternamn = "None"
- else:
- self.__efternamn = efternamn
- def gettelefonnummer(self):
- return self.__telefonnummer
- def settelefonnummer(self, telefonnummer):
- if telefonnummer == "":
- self.__telefonnummer = "None"
- else:
- self.__telefonnummer = telefonnummer
- def getpersonnummer(self):
- return self.__personnummer
- def setpersonnummer(self, personnummer):
- if personnummer == "":
- self.__personnummer = "None"
- else:
- self.__personnummer = personnummer
- def getadress(self):
- return self.__adress
- def setadress(self, adress):
- if adress == "":
- self.__adress = "None"
- else:
- self.__adress = adress
- def getpostnummer(self):
- return self.__postnummer
- def setpostnummer(self, postnummer):
- if postnummer == "":
- self.__postnummer = "None"
- else:
- self.__postnummer = postnummer
- def getstad(self):
- return self.__stad
- def setstad(self, stad):
- if stad == "":
- self.__stad = "None"
- else:
- self.__stad = stad
- class personinfo():
- #fönstret för programmet
- def __init__(self, root):
- self.root = root
- root.wm_title("Personinfo.se")
- #ramar
- self.topFrame = Frame(root)
- self.topFrame.pack()
- self.bottomFrame = Frame(root)
- self.bottomFrame.pack(side=BOTTOM, ipadx=2, ipady=2)
- #topp-ram
- self.buttonSave = Button(self.topFrame, text="Spara", width=10, command=self.saveToFile)
- self.buttonSave.pack(anchor=N, side=LEFT, padx=2, pady=2)
- self.buttonQuit = Button(self.topFrame, text="Avsluta", width=10, command=root.quit)
- self.buttonQuit.pack(anchor=N, side=LEFT, padx=2, pady=2)
- self.buttonInfo = Button(self.topFrame, text="Information", width=10, command=self.showInfo)
- self.buttonInfo.pack(anchor=N, side=LEFT, padx=2, pady=2)
- self.buttonsearch = Button(self.topFrame, text="Sök", width=10, command=self.search)
- self.buttonsearch.pack(anchor=N, side=LEFT, padx=2, pady=2)
- #botten-ram
- self.förnamnLabel = Label(self.bottomFrame, text="Förnamn")
- self.förnamnLabel.grid(row=0, column=0, sticky=E)
- self.efternamnLabel = Label(self.bottomFrame, text="Efternamn")
- self.efternamnLabel.grid(row=1, column=0, sticky=E)
- self.telefonnummerLabel = Label(self.bottomFrame, text="Telefonnummer")
- self.telefonnummerLabel.grid(row=2, column=0, sticky=E)
- self.personnummerLabel = Label(self.bottomFrame, text="Personnummer")
- self.personnummerLabel.grid(row=3, column=0, sticky=E)
- self.adressLabel = Label(self.bottomFrame, text="Adress")
- self.adressLabel.grid(row=4, column=0, sticky=E)
- self.postnummerLabel = Label(self.bottomFrame, text="Postnummer")
- self.postnummerLabel.grid(row=5, column=0, sticky=E)
- self.stadLabel = Label(self.bottomFrame, text="Stad")
- self.stadLabel.grid(row=6, column=0, sticky=E)
- #entry-boxes där man sedan får skriva in t.ex förnamn för en person
- self.förnamn = StringVar()
- self.efternamn = StringVar()
- self.telefonnummer = StringVar()
- self.personnummer = StringVar()
- self.adress = StringVar()
- self.postnummer = StringVar()
- self.stad = StringVar()
- self.förnamnEntry = Entry(self.bottomFrame, textvariable=self.förnamn)
- self.förnamnEntry.grid(row=0, column=1)
- self.efternamnEntry = Entry(self.bottomFrame, textvariable=self.efternamn)
- self.efternamnEntry.grid(row=1, column=1)
- self.telefonnummerEntry = Entry(self.bottomFrame, textvariable=self.telefonnummer)
- self.telefonnummerEntry.grid(row=2, column=1)
- self.personnummerEntry = Entry(self.bottomFrame, textvariable=self.personnummer)
- self.personnummerEntry.grid(row=3, column=1)
- self.adressEntry = Entry(self.bottomFrame, textvariable=self.adress)
- self.adressEntry.grid(row=4, column=1)
- self.postnummerNoEntry = Entry(self.bottomFrame, textvariable=self.postnummer)
- self.postnummerNoEntry.grid(row=5, column=1)
- self.stadEntry = Entry(self.bottomFrame, textvariable=self.stad)
- self.stadEntry.grid(row=6, column=1)
- #metod för att spara till en textfil
- def saveToFile(self):
- toFile = open("personinfo.txt", "a")
- toFile.write(self.förnamn.get() + " " + self.efternamn.get() + self.personnummer.get() + " \n")
- toFile.close()
- #sparar info till databasen
- self.förnamn.set = ""
- self.efternamn.set = ""
- self.personnummer.set = ""
- try:
- with db.cursor() as cursor:
- sql = "INSERT INTO personinfo(förnamn, efternamn, telefonnummer, personnummer, adress, postnummer, stad) VALUES " \
- "('{}', '{}', '{}', '{}', '{}', '{}', '{}')".format(self.förnamn.get(), self.efternamn.get(), self.telefonnummer.get(), self.personnummer.get(), self.adress.get(), self.postnummer.get(), self.stad.get())
- cursor.execute(sql)
- db.commit()
- except:
- db.rollback()
- print("Hoppsan, något blev visst fel!")
- #rutan talar om att personen blev sparad till registret
- MsgBox.showinfo("Sparat", "Personen är sparad i registret!")
- #rutan inehåller info om programmet och är kopplad till "Information"-knappen
- def showInfo(self):
- MsgBox.showinfo("Programinfo", "All rights reserved. © www.personinfo.se 2017")
- #metod för att söka efter en person
- def search(self):
- self.bottomFrame.destroy()
- self.bottomFrame = Frame(root)
- self.bottomFrame.pack()
- sökruta = Label(self.bottomFrame, text="Förnamn")
- sökruta.grid(row=0, column=0, sticky=E)
- self.förnamnEntry = Entry(self.bottomFrame, textvariable=self.förnamn)
- self.förnamnEntry.grid(row=0, column=1)
- self.searchknapp = Button(self.bottomFrame, text="Sök", command = lambda:self.searchDB(self.förnamnEntry.get()))
- self.searchknapp.grid(row=1, column=1)
- #söker igenom databasen efter förnamnet som skrevs in
- def searchDB(self, fnamn):
- sql = "SELECT * FROM personinfo WHERE förnamn = '{}'".format(fnamn)
- try:
- cursor = db.cursor()
- cursor.execute(sql)
- results = cursor.fetchall()
- # Visa först print(result)
- MsgBox.showinfo("Lyckades", "Personen hittades!")
- print("Förnamn".ljust(30) + "Efternamn".ljust(7) + "Telefonnummer".ljust(15) + "Personnummmer".ljust(15) + "Adress".ljust(15) + "Postnummer".ljust(15) + "Stad".ljust(15))
- for row in results:
- print(row[0].ljust(30), row[1].ljust(7), row[2].ljust(15), row[3].ljust(15), row[4].ljust(15), row[5].ljust(15), row[6].ljust(15))
- except:
- print("Personen du sökte kunde tyvärr inte hittas!")
- if __name__ == "__main__":
- root = Tk()
- personinfo(root)
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement