in Klassen umschreiben...
Verfasst: Freitag 21. November 2003, 23:09
Hi @ll,
wenn jemand von mal nix zu tun hat, würd ich mich freuen, wenn das mal jemand so umschreiben kann, dass es nur noch Klassen sind. Die Klassen sollen Vererbung enthalten und es sollen auch mehrere Funktionen in einer Klasse sein!
zusammen sein sollten:
renovieren, renovierenb,einziehen,ausziehen - in einer Klasse
eabreissen,abreissen,grundriss - in einer anderen Klasse
Die __init__ (wenn notwendig) sollte in der 2.-genannten Klasse sein.
die bereits vorhandene Klasse kann entweder so bleiben, oder ihr baut sie halt um -- hauptsache es funktioniert (und ich versteh am Ende noch irgendwas)
DANKE schon mal...
ICH
wenn jemand von mal nix zu tun hat, würd ich mich freuen, wenn das mal jemand so umschreiben kann, dass es nur noch Klassen sind. Die Klassen sollen Vererbung enthalten und es sollen auch mehrere Funktionen in einer Klasse sein!
zusammen sein sollten:
renovieren, renovierenb,einziehen,ausziehen - in einer Klasse
eabreissen,abreissen,grundriss - in einer anderen Klasse
Die __init__ (wenn notwendig) sollte in der 2.-genannten Klasse sein.
die bereits vorhandene Klasse kann entweder so bleiben, oder ihr baut sie halt um -- hauptsache es funktioniert (und ich versteh am Ende noch irgendwas)
Code: Alles auswählen
import Tkinter
from Tkconstants import *
import tkSimpleDialog2
import tkMessageBox
tk=Tkinter.Tk()
f1=Tkinter.Frame(tk)
f1.pack(side="left")
f2=Tkinter.Frame(tk)
f2.pack(side="top")
l1=Tkinter.Label(f2,text="Sie haben eine leere Flaeche - errichten sie einen Grundriss")
l1.grid(row=0,column=0)
anzahl=0.0
farbe=[]
var=Tkinter.StringVar()
fragenachok=0
class modalerDialog(tkSimpleDialog2.Dialog):
def body(self,master):
self.title("Stockwerk aussuchen")
Tkinter.Label(master,text="Bitte Stockwerk eingeben")
e1=Tkinter.Entry(master,textvariable=var).pack()
var.set("0")
def ok(self, event=None):
global fragenachok
fragenachok=1
if not self.validate():
self.initial_focus.focus_set()
return
self.withdraw()
self.update_idletasks()
self.apply()
self.cancel()
def renovierenb():
global farbe
global anzahl
global fragenachok
modalerDialog(f1)
if fragenachok==1:
fragenachok=0
try:
if farbe[len(farbe)-int(var.get())-1]==2:
farbe[(len(farbe)-int(var.get())-1)]=0
l1['text']="Renovierung wurde beendet"
b4=Tkinter.Button(f1,text="Haus abreissen",command=abreissen).grid(row=4,column=0,sticky="news")
a=400.0/anzahl
for b in xrange(int(anzahl)):
c="c"+str(b)
c=canvas.create_rectangle(390,(a*b),10,a*(b+1))
canvas.itemconfig(c,fill="green")
if farbe[b]==1:
canvas.itemconfig(c,fill="red")
elif farbe[b]==2:
canvas.itemconfig(c,fill="blue")
e=0
for d in xrange(len(farbe)):
if farbe[d]==2:
e=1
break
if e==0:
Tkinter.Label(f1).grid(row=9,column=0,sticky="news")
b6=Tkinter.Button(f1,text="Leute einziehen lassen",command=einziehen).grid(row=6,column=0,sticky="news")
b8=Tkinter.Button(f1,text="Renovieren",command=renovieren).grid(row=8,column=0,sticky="news")
else:
tkMessageBox.showerror("Fehler","Dort findet keine Renovierung statt")
except:
tkMessageBox.showerror("Fehler","Bitte Eingaben nachsehen")
pass
for i in xrange(len(farbe)):
if farbe[i]!=0:
l4=Tkinter.Label(f1).grid(row=4,column=0, sticky="news")
if farbe[0]==0:
b5=Tkinter.Button(f1,text="Oberste Etage abreissen",command=eabreissen).grid(row=5,column=0,sticky="news")
def renovieren():
global farbe
global anzahl
global fragenachok
modalerDialog(f1)
if fragenachok==1:
fragenachok=0
try:
if farbe[len(farbe)-int(var.get())-1]==0:
farbe[(len(farbe)-int(var.get())-1)]=2
l1['text']="Die angegebene Etage wird renoviert"
b9=Tkinter.Button(f1,text="Renovierung abschliessen",command=renovierenb).grid(row=9,column=0,sticky="news")
a=400.0/anzahl
for b in xrange(int(anzahl)):
c="c"+str(b)
c=canvas.create_rectangle(390,(a*b),10,a*(b+1))
canvas.itemconfig(c,fill="green")
if farbe[b]==1:
canvas.itemconfig(c,fill="red")
elif farbe[b]==2:
canvas.itemconfig(c,fill="blue")
e=0
for d in xrange(len(farbe)):
e=1
break
if e==0:
l2=Tkinter.Label(f1).grid(row=7,column=0,sticky="news")
elif farbe[len(farbe)-int(var.get())-1]==2:
tkMessageBox.showerror("Fehler","Dort wird bereits renoviert")
else:
tkMessageBox.showerror("Fehler","Dort wohnt schon jemand")
except:
tkMessageBox.showerror("Fehler","Bitte Eingaben nachsehen")
pass
o=0
p=0
for i in xrange(len(farbe)):
if farbe[i]!=0:
l4=Tkinter.Label(f1).grid(row=4,column=0, sticky="news")
if farbe[i]==2:
o=o+1
if farbe[i]==1:
p=p+1
if o==int(anzahl):
Tkinter.Label(f1).grid(row=7,column=0,sticky="news")
if p==int(anzahl):
Tkinter.Label(f1).grid(row=9,column=0,sticky="news")
if (int(o)+int(p))==int(anzahl):
Tkinter.Label(f1).grid(row=6,column=0,sticky="news")
Tkinter.Label(f1).grid(row=8,column=0,sticky="news")
if farbe[0]!=0:
l5=Tkinter.Label(f1).grid(row=5,column=0,sticky="news")
def ausziehen():
global farbe
global anzahl
global fragenachok
modalerDialog(f1)
if fragenachok==1:
fragenachok=0
try:
if farbe[len(farbe)-int(var.get())-1]==1:
farbe[(len(farbe)-int(var.get())-1)]=0
l1['text']="Leut ist ausgezogen"
a=400.0/anzahl
for b in xrange(int(anzahl)):
c="c"+str(b)
c=canvas.create_rectangle(390,(a*b),10,a*(b+1))
canvas.itemconfig(c,fill="green")
if farbe[b]==1:
canvas.itemconfig(c,fill="red")
elif farbe[b]==2:
canvas.itemconfig(c,fill="blue")
e=0
for d in xrange(len(farbe)):
if farbe[d]!=0:
e=e+1
if e==0:
l2=Tkinter.Label(f1).grid(row=7,column=0,sticky="news")
b4=Tkinter.Button(f1,text="Haus abreissen",command=abreissen).grid(row=4,column=0,sticky="news")
if farbe[0]==0:
b5=Tkinter.Button(f1,text="Oberste Etage abreissen",command=eabreissen).grid(row=5,column=0,sticky="news")
b6=Tkinter.Button(f1,text="Leute einziehen lassen",command=einziehen).grid(row=6,column=0,sticky="news")
b8=Tkinter.Button(f1,text="Renovieren",command=renovieren).grid(row=8,column=0,sticky="news")
else:
tkMessageBox.showerror("Fehler","Dort wohnt niemand")
except:
tkMessageBox.showerror("Fehler","Bitte Eingaben nachsehen")
pass
def einziehen():
global fragenachok
global anzahl
global farbe
modalerDialog(f1)
if fragenachok==1:
fragenachok=0
if farbe[len(farbe)-int(var.get())-1]==1:
tkMessageBox.showerror("Fehler","Dort wohnt bereits jemand")
elif farbe[len(farbe)-int(var.get())-1]==2:
tkMessageBox.showerror("Fehler","Dort wird gerade renoviert")
else:
try:
if int(var.get())<anzahl:
farbe[(len(farbe)-1-int(var.get()))]=1
l1['text']="Leut ist eingezogen"
a=400.0/anzahl
for b in xrange(int(anzahl)):
c="c"+str(b)
c=canvas.create_rectangle(390,(a*b),10,a*(b+1))
canvas.itemconfig(c,fill="green")
if farbe[b]==1:
canvas.itemconfig(c,fill="red")
elif farbe[b]==2:
canvas.itemconfig(c,fill="blue")
if farbe[0]==1:
Tkinter.Label(f1).grid(row=5,column=0,sticky="news")
b7=Tkinter.Button(f1,text="Leut ausziehen lassen",command=ausziehen).grid(row=7,column=0,sticky="news")
Tkinter.Label(f1).grid(row=4,column=0,sticky="news")
o=0
for m in xrange(len(farbe)):
if farbe[m]==1 or farbe[m]==2:
o=o+1
if int(o)==int(anzahl):
Tkinter.Label(f1).grid(row=6,column=0,sticky="news")
Tkinter.Label(f1).grid(row=8,column=0,sticky="news")
else:
tkMessageBox.showerror('Fehler','die Etage existiert nicht')
except:
tkMessageBox.showerror("Fehler","Bitte Eingaben nachsehen")
pass
def eabreissen():
global anzahl
global farbe
if farbe[0]==1:
tkMessageBox.showerror("Fehler","Dort wohnt jemand")
elif farbe[0]==2:
tkMessageBox.showerror("Fehler","Dort wird gerade renoviert")
else:
anzahl=anzahl-1.0
farbe=farbe[1: ]
if farbe==[]:
abreissen()
else:
if anzahl==0.0:
abreissen()
else:
l1['text']="noch vorhandene Etagen:", anzahl
a=400.0/anzahl
for b in xrange(int(anzahl)):
c="c"+str(b)
c=canvas.create_rectangle(390,(a*b),10,a*(b+1))
canvas.itemconfig(c,fill="green")
if farbe[b]==1:
canvas.itemconfig(c,fill="red")
elif farbe[b]==2:
canvas.itemconfig(c,fill="blue")
try:
if farbe[0]!=0:
Tkinter.Label(f1).grid(row=5,column=0,sticky="news")
o=0
p=0
for i in xrange(len(farbe)):
if farbe[i]==1:
o=o+1
elif farbe[i]==2:
p=p+1
if o==int(anzahl):
Tkinter.Label(f1).grid(row=9,column=0,sticky="news")
if p==int(anzahl):
Tkinter.Label(f1).grid(row=7,column=0,sticky="news")
if (p+o)==int(anzahl):
Tkinter.Label(f1).grid(row=6,column=0,sticky="news")
Tkinter.Label(f1).grid(row=8,column=0,sticky="news")
except:
pass
def abreissen():
global farbe
import os
os.startfile(os.getcwd()+"/hochhaus.pyw")
tk.destroy()
def etage():
global anzahl
global farbe
b4=Tkinter.Button(f1,text="Haus abreissen",command=abreissen).grid(row=4,column=0,sticky="news")
b5=Tkinter.Button(f1,text="Oberste Etage abreissen",command=eabreissen).grid(row=5,column=0,sticky="news")
b6=Tkinter.Button(f1,text="Leute einziehen lassen",command=einziehen).grid(row=6,column=0,sticky="news")
b8=Tkinter.Button(f1,text="Renovieren",command=renovieren).grid(row=8,column=0,sticky="news")
for i in xrange(len(farbe)):
if farbe[i]!=0:
l4=Tkinter.Label(f1).grid(row=4,column=0, sticky="news")
anzahl=anzahl+1.0
farbe=[0]+farbe
l1['text']="errichtete Etage:", anzahl-1
a=400.0/anzahl
for b in xrange(int(anzahl)):
c="c"+str(b)
c=canvas.create_rectangle(390,(a*b),10,a*(b+1))
canvas.itemconfig(c,fill="green")
if farbe[b]==1:
canvas.itemconfig(c,fill="red")
elif farbe[b]==2:
canvas.itemconfig(c,fill="blue")
def grundriss():
linie=canvas.create_line(390,400,10,400)
canvas.itemconfig(linie,fill="black")
l1["text"]="Grundriss ist festgelegt"
b3=Tkinter.Button(f1,text="Etage errichten",command=etage).grid(row=3,column=0,sticky="news")
Tkinter.Label(f1).grid(row=2,column=0,sticky="news")
b2=Tkinter.Button(f1,text="Grundriss festlegen",command=grundriss).grid(row=2,column=0,sticky="news")
b1=Tkinter.Button(f1,text="Beenden",command=tk.destroy).grid(row=1,column=0,sticky="news")
canvas=Tkinter.Canvas(tk,width=400, height=400,bg="grey")
canvas.pack(side="right")
Tkinter.mainloop()
DANKE schon mal...
ICH