Seite 1 von 1

Frame ein und aublenden

Verfasst: Dienstag 7. Januar 2003, 17:55
von gbl
Meine Oberfläche soll weitgehend dynamisch sein.

Unter Delphi konnte ich ein From mit Show darstellen und mit Hide verbergen. Ein ähnliches System möchte ich mit Python erreichen.

Ich habe ein Klasse erstellt, in der ein Frame erzeugt wird.
Soweit so gut. Jedoch wie kann ich ein Frame (eigendlich jedes Widget) nun wieder verwerfen?

Anbei mein Gedankengang

Code: Alles auswählen

File option.py

class optionForm:       
    def __init__(self, master):
        self.frame = Frame(master, takefocus=1, highlightthickness=2, highlightcolor='blue')
        Label(self.frame, text='     ').grid(row=0, column=0, sticky=W)
        Label(self.frame, text='     ').grid(row=0, column=5, sticky=W)
        
        self.B1=self.mkbutton(self.frame, 'B1', 1)
        self.B2=self.mkbutton(self.frame, 'B2', 2)
        self.B3=self.mkbutton(self.frame, 'B3', 3)
        self.B4=self.mkbutton(self.frame, 'B4', 4)
        
        #self.doShow()
        
    def doShow(self):
        self.frame.pack()

    def doHide(self):
        self.frame.packforget()
        
    def mkbutton(self, frame, button, column, action=None):
        button = Button(frame, text=button, highlightthickness=2)
        button.grid(padx=10, pady=6, row=0, col=column, sticky=NSEW)
        if action:
            button.config(command=action)
        return button
Es geht um die Public Methods doShow und doHide.

Code: Alles auswählen

File main.py

    def dobrowser(self):
        self.frmCurrent = option.optionForm(self.form)                  
        self.frmCurrent().doShow()
Ich erhalte den Fehler

Code: Alles auswählen

  File "C:\Python22\prg\EMC\main.py", line 106, in dobrowser
    self.frmCurrent().doShow()
AttributeError: browserForm instance has no __call__ method
In meinen Unterlagen finde ich nichts brauchbares.

Hat sich erledigt. Fehler gefunden

Verfasst: Dienstag 7. Januar 2003, 18:22
von gbl
Ich hatte den Code ein bischen durcheinander gebracht. Die Fehlermeldung tritt nicht mehr auf.

Widgets kann man mit pack_forget() verwerfen.