oop frage

Fragen zu Tkinter.
home

oop frage

Beitragvon home » Freitag 29. August 2003, 16:11

wie zerstöre ich das root fenster über die zweite klasse
root2.destroy() funktioniert nicht.

Code: Alles auswählen


from Tkinter import *

class suchen:
   def __init__(self):
      
      self.root = Tk()
      self.butt = Button(self.root,text="hallo",command=self.anz)
      self.butt.pack()
   
   def anz(self):
      such2 = suchen2()
      


class suchen2:
   def __init__(self):
      print "ok"
      root.destroy()


such = suchen()
mainloop()

Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Freitag 29. August 2003, 16:32

Hi home,

Dein Code schaut etwas seltsam aus.

woher soll suchen2 wissen was root ist?

Code: Alles auswählen

from Tkinter import *

class suchen:
   def __init__(self):
     
      self.root = Tk()
      self.butt = Button(self.root,text="hallo",command=self.anz)
      self.butt.pack()
   
   def anz(self):
      such2 = suchen2(self.root)
     


class suchen2:
   def __init__(self, root):
      print "ok"
      root.destroy()


such = suchen()
mainloop()


so sollte es zwar gehen, hat aber nix mit OOP zu tun. Ich würde sowas "verworrenen Code" nennen ;)


Gruß

Dookie
Gast

Beitragvon Gast » Freitag 29. August 2003, 16:47

mit der zweite kasse erstelle ich eine tabelle.


der orginalcode:

Code: Alles auswählen

from Tkinter import *
from datenbank import *

schrift1 = "times 14 bold"
schrift2 = "times 14"
hg1 = "white"
relie ="solid"


class suchen:
   def __init__(self,root2=None):

      #root2 = Toplevel()
      self.root2 = Toplevel()
      self.LabUber1 = Label(self.root2,text="Suchfunktion", width= 18,height=1 ,font=schrift1,relief=relie,bd=1)
      self.LabUber1.grid(row=0,column=0,columnspan=2)
      
      self.LabVorname = Label(self.root2,text="Vorname", width= 18,height=1 ,font=schrift1,relief=relie,bd=1)
      self.LabVorname.grid(row=1,column=1)
      
      self.LabNachname = Label(self.root2,text="Nachname", width= 18,height=1 ,font=schrift1,relief=relie,bd=1)
      self.LabNachname.grid(row=2,column=1)
      
      self.LabAdresse = Label(self.root2,text="Adresse", width= 18,height=1 ,font=schrift1,relief=relie,bd=1)
      self.LabAdresse.grid(row=3,column=1)
      
      self.LabOrt = Label(self.root2,text="Ort", width= 18,height=1 ,font=schrift1,relief=relie,bd=1)
      self.LabOrt.grid(row=4,column=1)

      self.LabLand = Label(self.root2,text="Land", width= 18,height=1 ,font=schrift1,relief=relie,bd=1)
      self.LabLand.grid(row=5,column=1)

      self.LabVon = Label(self.root2,text="Von", width= 18,height=1 ,font=schrift1,relief=relie,bd=1)
      self.LabVon.grid(row=6,column=1)

      self.LabBis = Label(self.root2,text="Bis", width= 18,height=1 ,font=schrift1,relief=relie,bd=1)
      self.LabBis.grid(row=7,column=1)
      
      self.LabArt = Label(self.root2,text="Art", width= 18,height=1 ,font=schrift1,relief=relie,bd=1)
      self.LabArt.grid(row=8,column=1)
      


      self.EntVorname = Entry(self.root2)
      self.EntVorname.grid(row=1,column=2)
      self.EntVorname.bind("<Enter>",self.suc)
      
      self.EntNachname = Entry(self.root2)
      self.EntNachname.grid(row=2,column=2)
      
      self.EntAdresse = Entry(self.root2)
      self.EntAdresse.grid(row=3,column=2)
      
      self.EntOrt = Entry(self.root2)
      self.EntOrt.grid(row=4,column=2)

      self.EntLand = Entry(self.root2)
      self.EntLand.grid(row=5,column=2)

      self.EntVon = Entry(self.root2)
      self.EntVon.grid(row=6,column=2)

      self.EntBis = Entry(self.root2)
      self.EntBis.grid(row=7,column=2)

      self.EntArt = Entry(self.root2)
      self.EntArt.grid(row=8,column=2)
      
   def suc(self,master):
      frame = Frame(self.root2)
      frame.grid(row=10,column=1,columnspan=2)
      tab = tabelle
      from datenbank import *
      adresse = adresse()
      
      for a in  adresse.such():
         print a
         id = a[0]
         vorname = a[3]
         nachname = a[4]
         adresse = a[5]
         ort = a[7]
         y = a[0]
         tab(frame,id,vorname,nachname,adresse,ort,y)
         
   
   
      




class tabelle:
   def __init__(self,frame,id,Vorname,Nachname,Adresse,Ort,y):
      self.name = id
      self.fr = frame
      self.Butt = Button(frame,text=id,bg="white",bd=1,command= self.anzeige)
      self.lab1 = Label(frame,text=Vorname,bg="white",bd=1)
      self.lab2 = Label(frame,text=Nachname,bg="white",bd=1)
      self.lab3 = Label(frame,text=Adresse,bg="white",bd=1)
      self.lab4 = Label(frame,text=Ort,bg="white",bd=1)
      
      self.Butt.grid(row=y,column=1)
      self.lab1.grid(row=y,column=2)
      self.lab2.grid(row=y,column=3)
      self.lab3.grid(row=y,column=4)
      self.lab4.grid(row=y,column=5)
      
      
   def anzeige(self):
      print self.name
      such.root2.destroy()
      
      

Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Freitag 29. August 2003, 17:08

mit oop braucht (sollte) die 2. Klasse gar ned wissen wie das fenster geschlossen wird.
Hier mal ein Beispiel nach dem MVC (Model View Control) Konzept

Code: Alles auswählen

from Tkinter import *
class ViewControl:
    def __init__(self):
        self.root = TK()
        self.butt = Button(self.root,text="hallo",command=self.anz)
        self.butt.pack()

    def ant(self):
        self.model = Model(self)
   
    def destroy(self):
        self.root.destroy()

class Model:
    def __init__(self, vc):
        self.viewcontrol = vc
        # weitere Initialisierungen

    def ich_habe_fertig(self):
        print "ok!"
        self.viewcontrol.destroy()
        self.viewcontrol = None #zirkulare Abhaengigkeit aufbrechen

app = ViewControl()
mainloop()



Gruß

Dookie
Gast

Beitragvon Gast » Freitag 29. August 2003, 17:11

danke das hat funktioniert

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder