Mehrere Fenster mit Bildern

Fragen zu Tkinter.
Antworten
MikeJey
User
Beiträge: 5
Registriert: Sonntag 4. März 2018, 13:10

Hi,

ich möchte eine GUI programmieren wo es ein Hauptfenster gibt und mehrere Bilder und Buttons zu sehen sind. Bei einzelnen Buttons soll ein zweites Fenster aufgehen, weil dort Werte angezeigt werden sollen mit einem erklärenden Bild dazu. Das Problem ist, dass auf dem zweiten Fenster keine Bilder zu sehen sind.

Code: Alles auswählen

def action_V():
    fenster_V = TK.Tk()
    fenster_V.title("Stoffdaten für Verdampfer")
    fenster_V.geometry('800x450')       
   
    img2 = Image.open("Bilder\Verd.png")
    img2 = img2.resize((200,200), Image.ANTIALIAS)
    img2 = ImageTk.PhotoImage(img2)
    l_V2 = TK.Label(fenster_V, image=img2)
    l_V2.place(x=10,y=20)
        
fenster = TK.Tk()
fenster.title("Gesamtsystemsimulation")
fenster.geometry('1600x900')

img = Image.open("Bilder\Verdampfer.png")
img = img.resize((370,350), Image.ANTIALIAS)
img = ImageTk.PhotoImage(img)
l_V = TK.Label(fenster, image=img)
l_V.place(x=250, y=50)

button_V = TK.Button(fenster, text='Stoffwerte Verdampfer', bg='light blue', command=action_V)
button_V.place(x=15, y=280, width=200, height=50)
Das Bild auf dem Hauptfenster wird angezeigt. Leider ist anscheinend die Bildanzeige-Programmierlogik innerhalb des Aufbaus eines neuen Fenster nicht die selbe ? Ich komme nicht weiter, ich hab schon sehr viel probiert, komme aber zu keiner Lösung. Das Bild "Verd" ist aber möglich im Hauptfenster anzuzeigen, wenn ich statt "fenster_V" "fenster" angebe.

Ich möchte einfach nur, dass sich das nächste Fenster aufmacht, man dort Informationen sieht (mit Bildern) und es wieder schließen kann.
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@MikeJey: es darf jeweils nur eine Tk-Instanz im Programm existieren. Weitere Fenster macht man mit TopLevel. Man muß immer eine Referenz auf das Image-Objekt behalten, sonst wird der Speicher dafür wieder freigegeben.
MikeJey
User
Beiträge: 5
Registriert: Sonntag 4. März 2018, 13:10

Wow, danke für die schnelle und hilfreiche Antwort. Hab es jetzt hinbekommen!

Vielen Dank!
Antworten