ich möchte euch gerne mal mein kleines Projekt vorstellen. Bisher ist es nur ein kleines Programm zum Speichern von Kontaktdaten.
Ich möchte damit später einmal erreichen, dass ich am Geburtstag meiner Freunde eine Benachrichtigung erhalte.
Vielleicht könnt ihr aber erst einmal über meinen Code gucken und mir bitte, bitte, bitte Verbesserungsvorschläge und Korrekturen zu meinem Quellcode geben. Ich habe mir nämlich ales selbst hier zusammengesucht und mir hat niemand wirklich Python beigebracht
meine MAIN.py:
Code: Alles auswählen
#!/usr/bin/python
#-------------------------------------------------------------------------------
# Name: Hauptmodul
# Purpose:
#
# Author: Basti
#
# Created: 15.05.2015
# Copyright: (c) Basti 2015
# Licence: <your licence>
#-------------------------------------------------------------------------------
def main():
pass
if __name__ == '__main__':
main()
from tkinter import *
from zusatzfenster import *
import pprint
root = Tk()
root.title("Kontaktdaten")
root.geometry("1000x500")
##Ueberschrift
Label(root, text="Meine ganz persoenlichen Kontakte! \n \n").grid(row=0, column=1)
## hier wird das Uebersichtsfenster generiert/geaendert
def personenliste_erzeugen():
import csv # imports the csv module
zeilen_counter = 3
csvdatei = open("personalien.csv") # opens the csv file
reader = csv.DictReader(csvdatei, fieldnames = ( "Vorname","Nachname","Geburtsdatum","Handynr","Festnetznr","Adresse")) # creates the reader object
liste = list(reader)
## SORTIERUNG der csv File Daten
if sortierauswahl.get() != "Geburtsdatum": ## wenn nach vorname oder Nachname sortiert wird
liste.sort(key=lambda x: x[sortierauswahl.get()])
elif sortierauswahl.get() == "Geburtsdatum": ## wenn nach Geburtsdatum sortiert wird
def sortier_helfer(item):
# Geburtsdatum ist item[2] in der Liste
t, m, y = item[sortierauswahl.get()].split('.')
return (m, t, y)
liste.sort(key=sortier_helfer)
for datensatz in liste:
Zeile = Text(root, height=1, width=100,)
Zeile.grid(row=zeilen_counter, column=1, columnspan=10)
Zeile.insert(END, "{0[Vorname]} {0[Nachname]}, {0[Geburtsdatum]}, {0[Handynr]}, {0[Festnetznr]}, {0[Adresse]}".format(datensatz))
Zeile.configure(state="disabled")
zeilen_counter += 1
## LeerZeile = Text(root, height=5, width=100)
## LeerZeile.grid(row=zeilen_counter, column=1, columnspan=10)
csvdatei.close()
##Radiobutton oben
Label (root, text="sortiert nach:\n").grid(row=1, column=1)
sortierauswahl = StringVar()
sortierauswahl.set("Vorname") # Standart-auswahl
auswahl_kriterien = [
("Vorname", "Vorname", 2),
("Nachname", "Nachname", 3),
("Geburtsdatum", "Geburtsdatum", 4),
]
for txt, val, column in auswahl_kriterien:
Radiobutton(root, text=txt, indicatoron = 0, width = 15 , variable=sortierauswahl, value=val, command=personenliste_erzeugen).grid(column=column, row=1)
## die Buttons
Button(root, text="aktualisieren", command=personenliste_erzeugen, bg="green", width=15).grid(row=1, column=100, sticky=W, pady=4)
Button(root, text="Eingabemaske", command=personeneingaben, width=15).grid(row=100, column=2, sticky=W, pady=4)
Button(root, text="Liste (CSV-Datei)", command=personenlisteausgabe, width=15).grid(row=100, column=3, sticky=W, pady=4)
Button(root, text='Quit', command=root.destroy, bg="red", width=15).grid(row=100, column=100, sticky=W, pady=4)
## Ausfuehrung der Liste bei Systemstart
personenliste_erzeugen()
root.mainloop()
Code: Alles auswählen
#!/usr/bin/python
#-------------------------------------------------------------------------------
# Name: module1
# Purpose:
#
# Author: Basti
#
# Created: 15.05.2015
# Copyright: (c) Basti 2015
# Licence: <your licence>
#-------------------------------------------------------------------------------
from tkinter import *
def main():
pass
if __name__ == '__main__':
main()
## Dieses Fenster wird angeziegt wenn man auf "Eingabemaske" klickt
def personeneingaben():
fenster_eingabe = Tk()
fenster_eingabe.title("Eingabemaske")
Label(fenster_eingabe, text="hier werden neue Freunde eingegeben: ").grid(row=0)
labels = ["Vorname" , "Nachname", "Geburtsdatum", "Handy-Nr", "Festnetz-Nr", "Anschrift"]
Eingabefelder = []
position = 2
for each in labels:
##Labels erstellen
Label(fenster_eingabe, text=each).grid(row=position)
##einzelne Eingabefelder erstellen
Eingabefeld = Entry(fenster_eingabe)
Eingabefeld.grid(row=position, column=1)
Eingabefelder.append(Eingabefeld)
position += 1
##Speichert die Daten in den Eingabefeldern
def datensatz_speichern():
datensatz=str("")
for each in Eingabefelder:
datensatz += each.get()+","
fobj = open("personalien.csv", "a")
fobj.write(datensatz+ "\n" )
fobj.close()
print(datensatz, "gespeichert!")
##Leert alle vorhandenen Felder
def felder_leeren():
for jedes_feld in Eingabefelder:
jedes_feld.delete(0, 'end')
##Buttons
Button(fenster_eingabe, text="Speichern", command=datensatz_speichern, bg="green", width=15).grid(row=20, column=1, sticky=W, pady=4)
Button(fenster_eingabe, text="Felder leeren", command=felder_leeren, width=15).grid(row=20, column=2, sticky=W, pady=4)
Button(fenster_eingabe, text='Quit', command=fenster_eingabe.destroy, bg="red", width=15).grid(row=20, column=3, sticky=W, pady=4)
mainloop( )
## Dieses Fenster wird angezeigt, wenn man auf "CSV-Datei" klickt
def personenlisteausgabe():
fenster_ausgabeliste = Tk()
fenster_ausgabeliste.title("CSV-DATEI")
## Automatisches Erstellen der vorhandenen Liste
personenliste = ""
fobj = open("personalien.csv", "r")
for zeile in fobj:
personenliste += zeile
fobj.close()
Liste = Text(fenster_ausgabeliste, width=100, height=15)
Liste.grid(row=1, rowspan=15)
Liste.insert(END, personenliste)
## Aenderung der original .txt Datei
def personenliste_aendern():
alle_datensaetze = Liste.get("0.0", END)
print (alle_datensaetze)
fobj = open("personalien.csv", "w")
fobj.write(alle_datensaetze)
fobj.close()
Button(fenster_ausgabeliste, text="Aendern", command=personenliste_aendern).grid(row=99)
## Schliessen-Button
Button(fenster_ausgabeliste, text='Quit', command=fenster_ausgabeliste.destroy, bg="red", width=15).grid(row=100, column=3, sticky=W, pady=4)
mainloop( )
Wie lässt sich sowas lösen?