class Zaehler: def __init__(self): # Objekt-Initialisierung: self.zaehlvar=0 # Attributbereich # nur über Methoden erreichbar def loeschen(self): # Methode "loeschen" self.zaehlvar=0 def hochzaehlen(self): # Methode "hochzaehlen" self.zaehlvar=self.zaehlvar+1 def hat_Zaehlerstand(self): # Ergebnis-Methode return self.zaehlvar
from zaehler0 import * class Moderner_Zaehler(Zaehler): # Vererbung ohne Überschreibung def __init__(self): # von Methoden (nur Erweiterungen) Zaehler.__init__(self) def herunterzaehlen(self): self.zaehlvar=self.zaehlvar-1 def setzen(self,wert): self.zaehlvar=wert
class M_VC_Manager: def __init__(self): self.viewer_Liste=[] # Anlegen einer leeren Liste def anmelden(self,view): self.viewer_Liste.append(view) # in Liste eintragen def abmelden(self,view): # in Liste löschen self.viewer_Liste.delete(view) def benachrichtigen(self): # alle Views über Datenänderung for i in self.viewer_Liste: # benachrichtigen. try: # Fehlerbehandlung: Sollte ein i.aktualisieren() # View sich nicht abgemeldet haben except: # (Fenster gekilled), dann wird pass # Abbruch und Fehlermeldung # bei Benachrichtigung unterdrückt
from zaehler import * from m_vc import * class Superzaehler(M_VC_Manager, Moderner_Zaehler): # Mehrfachvererbung ! def __init__(self): M_VC.__init__(self) Moderner_Zaehler.__init__(self) def setzen(self,wert): # Hier werden einige Methoden überschrieben, self.zaehlvar=wert # da nun die M_VC-Benachrichtigung self.benachrichtigen() # zu berücksichtigen ist. def loeschen(self): self.zaehlvar=0 self.benachrichtigen() def hochzaehlen(self): self.zaehlvar=self.zaehlvar+1 self.benachrichtigen() def herunterzaehlen(self): self.zaehlvar=self.zaehlvar-1 self.benachrichtigen()
import Tkinter from Tkconstants import * class Eingabe_Fenster: def __init__(self,Counter,Verschiebung): self.Counter=Counter window=Tkinter.Tk() fensterbreite=str(220) fensterhoehe=str(120) v=str(100+Verschiebung) geometrie=fensterbreite+"x"+fensterhoehe+"+"+v+"+"+v window.geometry(geometrie) window.title("Dr. Kokavecz") Knopf1=Tkinter.Button(window, text=" aufwärts ", command=self.plus) Knopf1.pack() Knopf2=Tkinter.Button(window, text=" abwärts ", command=self.minus) Knopf2.pack() Knopf3=Tkinter.Button(window, background="red", \ text=" ENDE ", command="exit") Knopf3.pack() def plus(self): self.Counter.hochzaehlen() def minus(self): self.Counter.herunterzaehlen()
import Tkinter from Tkconstants import * class Ausgabe_Fenster: def __init__(self,Counter, Verschiebung): self.Counter=Counter v=str(100+Verschiebung) window=Tkinter.Tk() fensterbreite=str(220) fensterhoehe=str(100) geometrie=fensterbreite+"x"+fensterhoehe+"+"+v+"+"+v window.geometry(geometrie) window.title("Dr. Kokavecz") self.hugo=0 self.Anzeige=Tkinter.Entry(window,textvariable=self.hugo, width=10) self.Anzeige.pack() self.aktualisieren() def aktualisieren(self): self.Anzeige.delete(0,"end") self.Anzeige.insert(0,self.Counter.hat_Zaehlerstand())
import Tkinter from Tkconstants import * class Ausgabe_Fenster_2: def __init__(self,Counter, Verschiebung): self.Counter=Counter v=str(100+Verschiebung) window=Tkinter.Tk() fensterbreite=str(220) fensterhoehe=str(100) geometrie=fensterbreite+"x"+fensterhoehe+"+"+v+"+"+v window.geometry(geometrie) window.title("Dr. Kokavecz") self.Anzeige=Tkinter.Scale(window, from_=-100, to=100, resolution=1, \ orient=HORIZONTAL, label="Zählung") self.Anzeige.pack() self.aktualisieren() def aktualisieren(self): self.Anzeige.set(self.Counter.hat_Zaehlerstand())
#! /usr/bin/python from szaehler import * from eingabe import * from ausgabe import * from ausgabe2 import * mein_Zaehler=Superzaehler() Bildlage=120 meine_Anzeige=Ausgabe_Fenster(mein_Zaehler,0*Bildlage) seine_Anzeige=Ausgabe_Fenster_2(mein_Zaehler,1*Bildlage) mein_Zaehler.anmelden(meine_Anzeige) mein_Zaehler.anmelden(seine_Anzeige) meine_Eingabe=Eingabe_Fenster(mein_Zaehler,2*Bildlage) seine_Eingabe=Eingabe_Fenster(mein_Zaehler,3*Bildlage) Tkinter.mainloop()
Dr. Bernd Kokavecz