Frame wird nicht erkannt (Python3.0)

OP #6626671
Lesenswert?

Hey ich bin absoluter Neuling in Sachen Programmieren

Kann mir jemand sagen warum "Frame" nicht aufgerufen werden kann?


from tkinter import *


fenster = Tk()


fenster.geometry("700x350")
fenster.title("Sortiment verwalten")

fenster.mainloop()

rahmen = Frame (fenster, relief = "ridge", borderwidth = 5)
rahmen.pack(fill="both", expand = 1)

#button
button1 = Button(rahmen,text="Sortiment anzeigen", width = 20)
button1.config(font=("Arial", 12, "bold"))

_____________________________________________
tkinter.TclError: can't invoke "frame" command: application has been 
destroyed
Beitrag #6626689 wurde von einem Moderator gelöscht.
#6627711
Lesenswert?

Kev G. schrieb:
> Danke hat funktioniert ! :)

Tipp am Rande: in vielen Tutorials etc. werden Tkinter und Tix 
prozedural gezeigt, aber spätestens bei mittelgroßen Programmen führt 
das trotz Python unweigerlich in ein kaum wartbares Chaos.
1
#!/usr/bin/env python
2
import tkinter as T
3

4
class MainWin(T.Tk):
5
    def __init__(self, *args, **kwargs):
6
        T.Tk.__init__(self, *args, **kwargs)
7
        
8
        self.button = T.Button(self, text="Exit", command=self.destroy)
9
        self.button.pack(side=T.TOP)
10
        
11
        self.frame = T.Frame(self, relief='ridge', borderwidth=5)
12
        self.frame.pack(side=T.TOP, fill='both', expand=1)
13

14
if __name__ == '__main__':
15
    MainWin().mainloop()

Der Trick ist, daß Tkinter noch das veraltete OO-Interface hat und 
deswegen die Parent-Methoden nicht mit super() aufrufen kann. Deswegen 
geschieht das hier in Zeile 6 auf die alte Weise, also mit expliziter 
Angabe der Parent-Klasse und dem direkten Aufruf seiner Methode (hier: 
ihres Konstruktors), ansonsten funktioniert das alles ganz genau wie 
gewohnt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren