Frame ein und aublenden

Fragen zu Tkinter.
Antworten
gbl
User
Beiträge: 10
Registriert: Mittwoch 25. Dezember 2002, 10:20

Dienstag 7. Januar 2003, 17:55

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.
Günter
http://www.itboard.dyndns.org
http://www.emailchess.at
gbl
User
Beiträge: 10
Registriert: Mittwoch 25. Dezember 2002, 10:20

Dienstag 7. Januar 2003, 18:22

Ich hatte den Code ein bischen durcheinander gebracht. Die Fehlermeldung tritt nicht mehr auf.

Widgets kann man mit pack_forget() verwerfen.
Günter
http://www.itboard.dyndns.org
http://www.emailchess.at
Antworten