Newbie Frage zu Tkinter Part Two

Fragen zu Tkinter.
Antworten
Boardgameingo
User
Beiträge: 10
Registriert: Dienstag 29. März 2022, 11:26

Hallo zusammen,

diesmal im richtigen Folder :)

Ich möchte aus einem Fenster ein weiteres aufrufen, wenn man auf ein Image als Button klickt. Beim ersten Aufruf kommt das Image und der Click funktioniert. Beim zweiten erscheint das Image gar nicht erst. Beim Rücksprung auf das erste Window liefert der Quit Button einen Fehler, der sonst immer anstandslos funktionierte. Wo stehe ich hier auf dem Schlauch?? Ich vermute mal schon bei den Basics, aber vielleicht gibt mir jemand eine Hilfe.

Code: Alles auswählen

import tkinter as tk

   
class Window_01 (tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        
        frame_01 = tk.Frame(self, width=600, height=200).grid(column=0,row=0)
        
        frame_01_a = tk.LabelFrame(frame_01, text='Click Image to Start',
                        width=300, height=200).grid(column=0,row=0)
        
        self.wapo_image = tk.PhotoImage(file='WaPo_small.gif')
        label_01 = tk.Button(frame_01_a, image=self.wapo_image,
                             command=self.open_window_02)
        label_01.grid(column=0, row=0)
        label_01.image = self.wapo_image
        
        tk.Button(frame_01_a, text="QUIT", command=self.destroy).grid(column=1, row=0)  

    def open_window_02 (self):
        self.window_02 = Window_02()

class Window_02 (tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        
        frame_02 = tk.Frame(self, width=600, height=200).grid(column=0,row=0)
        
        frame_02_a = tk.LabelFrame(frame_02, text='Click Image to Start',
                        width=300, height=200).grid(column=0,row=0)
        
        self.wapo_image = tk.PhotoImage(file='WaPo_small.gif')
        label_02 = tk.Button(frame_02_a, image=self.wapo_image,
                             command=self.open_window_03)
        label_02.grid(column=0, row=0)
        label_02.image = self.wapo_image
        
        tk.Button(frame_02_a, text="QUIT", command=self.destroy).grid(column=1, row=0)  

    def open_window_03 (self):
        self.window_03 = Window_03()

class Window_03 (tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        
        frame_03 = tk.Frame(self, width=600, height=200).grid(column=0,row=0)
        
        frame_03_a = tk.LabelFrame(frame_03, text='Click Image to Start',
                        width=300, height=200).grid(column=0,row=0)
        
        self.wapo_image = tk.PhotoImage(file='WaPo_small.gif')
        label_03 = tk.Button(frame_03_a, image=self.wapo_image,
                             command=self.destroy)
        label_03.grid(column=0, row=0)
        label_03.image = self.wapo_image
   
        
def main():
    root = Window_01()
    root.mainloop()

if __name__ == "__main__":
    main()
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Es darf nur ein Tk-Objekt geben in deiner Anwendung. Was du also suchst fuer deine anderen Fenster (oder sogar im Zweifel alle, muesste ich ausprobieren) ist tk.Toplevel.
Boardgameingo
User
Beiträge: 10
Registriert: Dienstag 29. März 2022, 11:26

Danke, ich komme weiter!!
Antworten