Seite 1 von 1

Bild in zweites Fenster

Verfasst: Mittwoch 22. Juli 2020, 22:39
von Keilhaub
Hallo Leute,

ich programmiere gerade ein Rechentool im Bereich der Strömungsmechanik.
In meinem Hauptmenü habe ich ganz easy Bilder eingefügt.
In meinem Untermenü wird das selbe Bild allerdings nicht mehr angezeigt.
Ich habe es schon mit verschiedenen Bildern probiert.

Der Button funktioniert einwandfrei und deshalb schicke ich nur den Code innerhalb des Befehls mit.
Die Konstanten canvas_width und canvas_height habe ich bereits im Hauptmenü definiert.
Danke für eure Hilfe! :wink:

Code: Alles auswählen

def hydrostatik_action():
        tkFenster2 = Toplevel()
        tkFenster2.title('Hydrostatik Calculator')
        tkFenster2.geometry('500x500')

        p = Canvas(tkFenster2, width=canvas_width, height=canvas_height)
        p.pack()

        hydrostatik_label = Label(tkFenster2, text="Hydrostatik", font=('Arial', 30, 'underline'), foreground = 'green')
        hydrostatik_label.place(x = 150, y = 0)

        hydrostatikbild2 = PhotoImage(file='I:\\test.gif')
        p.create_image(205, 275, anchor=NW, image=hydrostatikbild2)

Re: Bild in zweites Fenster

Verfasst: Donnerstag 23. Juli 2020, 11:03
von __deets__
Ein Klassiker. Ich wünschte manchmal wir hätten hier eine KI, die gleich antworten vorschlägt. Nix gegen dich, das Problem ist subtil & verwirrend! Es zum 1000sten mal erläutern nervt etwas ;)

Du musst eine Referenz auf das PhotoImage behalten. Sonst räumt der garbage collector von Python das ab, und es verschwindet.

Ein Weg ist zb

p.hydrostatikbild2

statt nur

hydrostatikbild2

zu benutzen. Dann ist es ein attribute des canvas, und wird am Leben erhalten.

Besser allerdings wäre der Umstieg auf Objekt orientierte Programmierung. Denn du hast da einen Wust aus globalen Variablen, der dir auf die Füße fallen wird.

Re: Bild in zweites Fenster

Verfasst: Donnerstag 23. Juli 2020, 14:28
von Keilhaub
Hat super funktioniert. Vielen Dank!