#!/usr/bin/python
from Tkconstants import *
import os
import string
import sys
from datwahlfenster import *
from meldung import *
class BenutzerInterface:
"""
/* Erzeugt ein Fenster auf dem Bildschirm mit Pull-Down-Menue
"""
def __init__(self):
"""
* Initialisierung
"""
self.eineDateiauswahl=None # Referenz auf Dateiauswahl
self.tk=Tkinter.Tk() # s. Tk-Inter
self.__Fenster_zeigen()
self.__Menu_zeigen()
self.datei="" # aktuell ausgewählte Datei : keine
self.verz=os.getcwd() # aktuelles Verzeichnis holen
self.demoObj=[1,2,3] # das ist mein zu speicherndes Objekt # demo-Objekt
def __Fenster_zeigen(self):
"""
/* interne Methode, Verfeinerung, spricht für sich selbst
"""
Fensterbreite=str(450)
Fensterhoehe=str(350)
geometrie=Fensterbreite+"x"+Fensterhoehe+"+0+0"
self.tk.geometry(geometrie)
self.tk.title("Beispiel für die Anwendung des Dateiwahlfensters")
def __Menu_zeigen(self):
"""
/* interne Methode: Generierung des Pull-Down-Menues
"""
zeile=Tkinter.Frame(self.tk,relief=RAISED, bd=2)
zeile.pack(side=TOP, fill=X)
fileButton=Tkinter.Menubutton(zeile,text=" Datei ",underline=2)
fileButton.pack(side=LEFT)
DateiMenu=Tkinter.Menu(fileButton)
DateiMenu.add_command(label="Neu", command=self.neu)
DateiMenu.add_command(label="Öffnen", command=self.oeffnen)
DateiMenu.add_separator()
DateiMenu.add_command(label="speichern", command=self.speichern)
DateiMenu.add_command(label="speichern als ...",command=self.speichern_als)
DateiMenu.add_separator()
DateiMenu.add_command(label="Ende", command="exit")
fileButton["menu"]=DateiMenu
def neu(self):
"""
/* neues demo-Objekt erzeugen
"""
del self.demoObj
self.demoObj=[]
print self.demoObj # demo
def __hole(self):
"""
/* Beispiel für interne Lesemethode
"""
self.verz=self.eineDateiauswahl.get_dir()
self.datei=self.eineDateiauswahl.get_datei()
fname=self.verz+os.sep+self.datei # akt. Dateiname
try:
f=open(fname,"r")
objekt=pickle.load(f)
f.close()
self.demoObj=objekt
self.eineDateiauswahl.set_fertig()
except:
meldung=Meldung("Datei oder Verzeichnis nicht gefunden!")
self.eineDateiauswahl.set_datei=""
print self.demoObj # demo
def oeffnen(self):
"""
/* Objekterzeugung: Fachkonzept und GUI Dateiauswahl
"""
self.eineDateiauswahl=DV_Auswahl(self.__hole,"*.list")
einDateiauswahlFenster=DV_Auswahl_GUI(" öffnen ",self.eineDateiauswahl)
# GUI kennt Fachkonzept (self.eineDateiauswahl)
def speichern(self):
"""
/* falls noch keine Dateiauswahl erfolgte: speichern_als!
"""
if self.eineDateiauswahl != None:
self.datei=self.eineDateiauswahl.get_datei()
self.verz=self.eineDateiauswahl.get_dir()
if self.datei=="":
self.speichern_als()
else:
try:
fname=self.verz+os.sep+self.datei
f=open(fname,"w")
pickle.dump(self.demoObj,f)
f.close()
self.eineDateiauswahl.set_fertig()
print self.demoObj # demo
except:
meldung=Meldung("Schreibfehler! Keine Berechtigung!")
self.eineDateiauswahl.set_datei=""
def speichern_als(self):
"""
/* Objekterzeugung: Fachkonzept und GUI Dateiauswahl
"""
self.eineDateiauswahl=DV_Auswahl(self.__speichern2,"*.list")
# Schreibmethode übergeben
einDateiauswahlFenster=DV_Auswahl_GUI(" speichern " \
,self.eineDateiauswahl)
# Das Fachkonzept muss dem GUI bekannt sein
def __speichern2(self):
"""
/* Beispiel für interne Schreibmethode
"""
self.datei=self.eineDateiauswahl.get_dir()
self.verz=self.eineDateiauswahl.get_datei()
fname=self.datei+os.sep+self.verz # Dateiname
try:
f=open(fname,"w")
pickle.dump(self.demoObj,f)
f.close()
self.eineDateiauswahl.set_fertig()
print self.demoObj # demo
except:
meldung=Meldung("Schreibfehler! Keine Berechtigung!")
self.eineDateiauswahl.set_datei=""
#-------------------------- Hauptprogramm ---------------------------
MeinBildschirm=BenutzerInterface()
Tkinter.mainloop()
Dr. Bernd Kokavecz