Gesamtlösung als Python-Quelltext

zaehler0.py


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

zaehler.py


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

m_vc.py

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


szaehler.py

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()


eingabe.py

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()



ausgabe.py

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())



ausgabe2.py


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())





main.py


#! /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()   



zurück

Dr. Bernd Kokavecz
24. Januar 2000