in das canvas werden z.b. label klassen erzeugt - die auch eig. klassen sind.
jetzt möchte ich von einer label klasse zur der gui klasse ein signal schicken.
-----
classe gui: - in der gui class erzeuge ich eine label klasse
aus der label klasse möchte ich die gui klasse steuern.
--
hier mein code - mein Tkinter wysiwyg editor.
Code: Alles auswählen
from Tkinter import *
global feld
schrift1 = "-*-Curier--R-*--*-140-*-*-*-*-ISO8859-1"
schrift2 = "-*-Times-Bold-R-*--*-240-*-*-*-*-ISO8859-1"
class gui:
def __init__(self):
self.root = Tk()
self.flag = 0
self.objzahler = 0
self.felder = []
self.var1 = StringVar()
self.labelm = Radiobutton(self.root,text="label",indicatoron=0,variable=self.var1,value="label").place(x=1,y=1)
self.entrym = Radiobutton(self.root,text="entry",indicatoron=0,variable=self.var1,value="entry").place(x=40,y=1)
self.movm = Radiobutton(self.root,text="move",indicatoron=0,variable=self.var1,value="move").place(x=80,y=1)
self.buttmaker = Button(self.root,text="code export",command=self.codemaker).place(x=120,y=1)
self.builder = Canvas(self.root,bg="white",width=500,height=400)
self.builder.place(x=1,y=33)
self.builder.bind("<Motion>",self.move)
self.builder.bind("<Button-1>",self.gedruckt)
self.builder.bind("<ButtonRelease-1>",self.druckt_los)
self.root.minsize(500,450)
def move(self,event):
global feld
if self.flag==1:
exec("self.obj" + str(feld) +".move(event.x,event.y)")
def gedruckt(self,event):
global feld
self.flag = 1
if self.var1.get() == "entry":
self.objzahler = self.objzahler +1
exec("self.obj" + str(self.objzahler) +"= objects(self.builder,'entry',event.x,event.y," + str(self.objzahler) +")")
self.felder.append(str(self.objzahler))
self.flag = 2
if self.var1.get() == "label":
self.objzahler = self.objzahler +1
exec("self.obj" + str(self.objzahler) +"= objects(self.builder,'label',event.x,event.y," + str(self.objzahler) +")")
self.felder.append(str(self.objzahler))
self.flag = 2
def druckt_los(self,event):
self.flag = 2
def listdel(self,objz):
print "del"
#self.felder.remove("self.obj"+str(objz)) # löschen aus der tabelle
def codemaker(self):
for f in self.felder:
exec("neu = self.obj" + f+".felder()")
print neu
class objects:
def __init__(self,root,was,xx,yy,name):
"Objekte im canvas erstellen"
self.xx = xx
self.yy = yy
self.art = ""
self.text =""
self.width = ""
self.height = ""
self.bg = ""
self.relief = ""
self.bd = ""
if was == "entry":
self.zelle = Entry(root)
self.zelle.bind("<Button-3>",self.edit)
self.art = "Entry"
if was == "label":
self.zelle = Label(root,text="text")
self.zelle.bind("<Button-3>",self.edit)
self.art = "Label"
self.name = name
self.zelle.place(x=xx,y=yy)
self.zelle.bind("<Enter>",self.anz)
def delete(self):
#gui.listdel(self.name)
self.zelle.destroy()
self.root2.destroy()
def move(self,xx,yy):
self.xx = xx
self.yy = yy
self.zelle.place(x=xx,y=yy)
def anz(self,event):
global feld
feld = self.name
def felder(self):
"sollte einen feld mit den daten zurückgebebne"
print "felder------------------"
print "self.obj" + str(self.name)
print self.art
print self.width
print self.height
print self.bg
print self.relief
print self.bd
print self.xx
print self.yy
feld = str(self.name) # hier muss ich die werte vom objekt zurückgeben
return feld
def edit(self,event):
print "edit"
self.root2 = Toplevel()
self.root2.minsize(250,350)
self.lab1 = Label(self.root2,text="Label EDIT",font=schrift2).place(x=10,y=20)
self.lab2 = Label(self.root2,text="width",font=schrift1).place(x=10,y=60)
self.lab3 = Label(self.root2,text="heigth",font=schrift1).place(x=10,y=80)
self.lab4 = Label(self.root2,text="text",font=schrift1).place(x=10,y=110)
self.lab5 = Label(self.root2,text="bgcolor",font=schrift1).place(x=10,y=130)
self.lab6 = Label(self.root2,text="relief",font=schrift1).place(x=10,y=160)
self.lab7 = Label(self.root2,text="border",font=schrift1).place(x=10,y=180)
self.buttok = Button(self.root2,text="ok",command=self.make).place(x=10,y=250)
self.buttdel = Button(self.root2,text="del",command=self.delete).place(x=50,y=250)
self.entr1 = Entry(self.root2)
self.entr1.place(x=60,y=60)
self.entr2 = Entry(self.root2)
self.entr2.place(x=60,y=80)
self.entr3 = Entry(self.root2)
self.entr3.place(x=60,y=110)
self.entr4 = Entry(self.root2)
self.entr4.place(x=60,y=130)
self.entr5 = Entry(self.root2)
self.entr5.place(x=60,y=160)
self.entr6 = Entry(self.root2)
self.entr6.place(x=60,y=180)
def make(self):
if self.entr1.get() <> "":
self.zelle["width"]=self.entr1.get()
self.width = self.entr1.get()
if self.entr2.get() <> "":
self.zelle["height"]=self.entr2.get()
self.height = self.entr2.get()
if self.entr3.get() <> "":
self.zelle["text"]=self.entr3.get()
self.text = self.entr3.get()
if self.entr4.get() <> "":
self.zelle["bg"]=self.entr4.get()
self.bg = self.entr4.get()
if self.entr5.get() <> "":
self.zelle["relief"]=self.entr5.get()
self.relief = self.entr5.get()
if self.entr6.get() <> "":
self.zelle["bd"]=self.entr6.get()
self.bd = self.entr6.get()
gu = gui()
mainloop()