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