# Klassen zur Modellierung einer Lernkarte # Autor: KB # Datum: 16.06.09 # Grafische Benutzeroberfläche from tkinter import * class GUILernkartei(): def __init__(self, kartenstapel, kartenmanager): # Referenzattribute zum Datenmodell self.kartenstapel = kartenstapel self.kartenmanager = kartenmanager # Erzeugung der Komponenten # Fenster self.tkFenster = Tk() self.tkFenster.title("Lernkartei") self.tkFenster.geometry('430x360') # Laden und Speichern self.framelernmanager = Frame(master=self.tkFenster, background="gray") self.framelernmanager.place(x=10, y=10, width=410, height=40) self.buttonLaden = Button(master=self.framelernmanager, text="Karten laden", command=self.ButtonLadenClick) self.buttonLaden.place(x=10, y=10, width=150, height=20) self.buttonSpeichern = Button(master=self.framelernmanager, text="Karten speichern", command=self.ButtonSpeichernClick) self.buttonSpeichern.place(x=250, y=10, width=150, height=20) # Auswahlmöglichkeiten self.frameZustandRand = Frame(master=self.tkFenster, background="gray") self.frameZustandRand.place(x=10, y=60, width=410, height=90) self.frameZustand = Frame(master=self.frameZustandRand) self.frameZustand.place(x=10, y=10, width=390, height=70) self.zustand = IntVar() self.radiobuttonAnzeigen = Radiobutton(master=self.frameZustand, text="Karten anzeigen", value=0, variable=self.zustand, command=self.RadioButtonAktalisieren) self.radiobuttonAnzeigen.place(x=10, y=10, height=20) self.radiobuttonAendern = Radiobutton(master=self.frameZustand, text="Karten aufnehmen und entfernen", value=1, variable=self.zustand, command=self.RadioButtonAktalisieren) self.radiobuttonAendern.place(x=10, y=40, height=20) self.radiobuttonAbfragenBedeutung = Radiobutton(master=self.frameZustand, text="Stichwort abfragen", value=2, variable=self.zustand, command=self.RadioButtonAktalisieren) self.radiobuttonAbfragenBedeutung.place(x=240, y=10, height=20) self.radiobuttonAbfragenBezeichner = Radiobutton(master=self.frameZustand, text="Erläuterung abfragen", value=3, variable=self.zustand, command=self.RadioButtonAktalisieren) self.radiobuttonAbfragenBezeichner.place(x=240, y=40, height=20) self.radiobuttonAnzeigen.select() # aktuelle Karte self.frameKarte = Frame(master=self.tkFenster, background="gray") self.frameKarte.place(x=10, y=160, width=410, height=190) self.frameKarteStichwort = Frame(master=self.frameKarte, background="#BDE2F3") self.frameKarteStichwort.place(x=10, y=40, width=150, height=110) self.frameKarteErlaeuterung = Frame(master=self.frameKarte, background="#BDE2F3") self.frameKarteErlaeuterung.place(x=250, y=40, width=150, height=110) self.entryKarteStichwort = Entry(master=self.frameKarteStichwort, text="") self.entryKarteStichwort.place(x=10, y=45, width=130, height=20) self.entryKarteErlaeuterung = Entry(master=self.frameKarteErlaeuterung, text="") self.entryKarteErlaeuterung.place(x=10, y=45, width=130, height=20) self.buttonAnfang = Button(master=self.frameKarte, text="Anfang", command=self.ButtonAnfangClick) self.buttonAnfang.place(x=170, y=40, width=70, height=20) self.buttonWeiter = Button(master=self.frameKarte, text="weiter", command=self.ButtonWeiterClick) self.buttonWeiter.place(x=170, y=70, width=70, height=20) self.buttonZurueck = Button(master=self.frameKarte, text="zurück", command=self.ButtonZurueckClick) self.buttonZurueck.place(x=170, y=100, width=70, height=20) self.buttonEnde = Button(master=self.frameKarte, text="Ende", command=self.ButtonEndeClick) self.buttonEnde.place(x=170, y=130, width=70, height=20) self.buttonStichwortAufdecken = Button(master=self.frameKarte, text="Stichwort aufdecken", command=self.ButtonBezeichnerAufdeckenClick) self.buttonStichwortAufdecken.place(x=10, y=160, width=150, height=20) self.buttonErlaeuterungAufdecken = Button(master=self.frameKarte, text="Erläuterung aufdecken", command=self.ButtonBedeutungAufdeckenClick) self.buttonErlaeuterungAufdecken.place(x=250, y=160, width=150, height=20) self.buttonAufnehmen = Button(master=self.frameKarte, text="Karte aufnehmen", command=self.ButtonAufnehmenClick) self.buttonAufnehmen.place(x=10, y=10, width=150, height=20) self.buttonLoeschen = Button(master=self.frameKarte, text="Karte entfernen", command=self.ButtonLoeschenClick) self.buttonLoeschen.place(x=250, y=10, width=150, height=20) self.buttonLeereKarte = Button(master=self.frameKarte, text="neue Karte", command=self.ButtonLeereKarteClick) self.buttonLeereKarte.place(x=170, y=10, width=70, height=20) self.buttonUmsortieren = Button(master=self.frameKarte, text="umsortieren", command=self.ButtonUmsortierenClick) self.buttonUmsortieren.place(x=170, y=160, width=70, height=20) def karteAnzeigen(self, z): if len(kartenstapel.karten) > 0: if z == 0 or z == 1: self.gesamteKarteAnzeigen() else: self.leereKarteAnzeigen() def gesamteKarteAnzeigen(self): self.entryKarteStichwort.delete(0, END) self.entryKarteStichwort.insert(0, self.kartenmanager.getAktuelleKarte().stichwort) self.entryKarteErlaeuterung.delete(0, END) self.entryKarteErlaeuterung.insert(0, self.kartenmanager.getAktuelleKarte().erlaeuterung) def leereKarteAnzeigen(self): self.entryKarteStichwort.delete(0, END) self.entryKarteErlaeuterung.delete(0, END) # Ereignisverarbeitung def RadioButtonAktalisieren(self): self.kartenmanager.anfangKartenstapel() self.karteAnzeigen(self.zustand.get()) def ButtonAufnehmenClick(self): if self.zustand.get() == 1: bezeichner = self.entryKarteStichwort.get() bedeutungen = self.entryKarteErlaeuterung.get() self.kartenmanager.karteHinzufuegen(bezeichner, bedeutungen) self.karteAnzeigen(self.zustand.get()) def ButtonLoeschenClick(self): if self.zustand.get() == 1: self.kartenmanager.aktuelleKarteLoeschen() self.karteAnzeigen(self.zustand.get()) def ButtonLeereKarteClick(self): if self.zustand.get() == 1: self.leereKarteAnzeigen() def ButtonAnfangClick(self): self.kartenmanager.anfangKartenstapel() self.karteAnzeigen(self.zustand.get()) def ButtonEndeClick(self): self.kartenmanager.endeKartenstapel() self.karteAnzeigen(self.zustand.get()) def ButtonWeiterClick(self): self.kartenmanager.weiterKartenstapel() self.karteAnzeigen(self.zustand.get()) def ButtonZurueckClick(self): self.kartenmanager.zurueckKartenstapel() self.karteAnzeigen(self.zustand.get()) def ButtonLadenClick(self): pass def ButtonSpeichernClick(self): pass def ButtonUmsortierenClick(self): pass def ButtonBedeutungAufdeckenClick(self): pass def ButtonBezeichnerAufdeckenClick(self): pass # Erzeugung der Datenmodell-Objekte from lernkartei import * kartenstapel = Kartenstapel() kartenmanager = Kartenmanager() kartenmanager.setKartenstapel(kartenstapel) # Erzeugung des GUI-Objekts gui_lernkartei = GUILernkartei(kartenstapel, kartenmanager) gui_lernkartei.tkFenster.mainloop()