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
Nach mainloop() findet nix mehr statt, das muss IIRC die letzte Anweisung sein.
Beitrag #6626689 wurde vom Autor gelöscht.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.