Label wird nicht angezeigt (Tkinter)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Contrean
User
Beiträge: 7
Registriert: Donnerstag 22. November 2018, 21:06

Hallo liebes Forum.

Ich habe mal versucht ein Spiel zu machen und arbeite am Menü. Nun wollte ich mit den Optionen anfangen und habe eingestellt, dass wenn man den Button "Options" drückt, die Buttons, welche man grade sehen kann, deaktiviert werden und ein neuer Hintergrund angezeigt wird. Nur wird mir anstatt eines Hintergrunds einfach ein blankes Tkinter fenster angezeigt. Weiß jemand, woran das liegen kann und wenn ja, woran?

Ich hoffe mir kann geholfen werden.

Code:

Code: Alles auswählen

from tkinter import *
import exceptions

#Window
root=Tk()
root.geometry('800x600')
root.title('Royal Island')
root.resizable(False,False)
root.iconbitmap('./assets/textures/root/icon.ico')

#Background    
try:
    background=PhotoImage(file='./assets/textures/root/menubg.png')
    backgroundimg=Label(root,image=background)
    backgroundimg.place(x=0,y=0,width=800,height=600)
except:
    exceptions.nobgimg()

#Commands
def playbuttonaction():
    print('I got here: Play')

def optionsbuttonaction():
    optionsbutton.config(state=DISABLED)
    playbutton.config(state=DISABLED)
    try:
        optionsbackground=PhotoImage(file='./assets/textures/root/options.png')
        optionsbackgroundimg=Label(root,image=optionsbackground)
        optionsbackgroundimg.place(x=0,y=0,width=800,height=600)
    except:
        exceptions.nobgimg()

#Buttons
playbuttonimg=PhotoImage(file='./assets/textures/root/Playbutton.png')

playbutton=Button(root,image=playbuttonimg,bd=0,command=playbuttonaction)
playbutton.place(width=200,height=40,x=290,y=237)

optionsbuttonimg=PhotoImage(file='./assets/textures/root/Optionsbutton.png')

optionsbutton=Button(root,image=optionsbuttonimg,bd=0,command=optionsbuttonaction)
optionsbutton.place(width=200,height=40,x=290,y=291)


root.mainloop()
Benutzeravatar
__blackjack__
User
Beiträge: 14042
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Contrean: Verwende keine nackten ``excep:``\s ohne die konkreten Ausnahmen die Du erwartest. Ich vermute jetzt einfach mal, dass Dir diese unsinnige Ausnahmebehandlung die Fehlermeldung verschluckt.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
Sirius3
User
Beiträge: 18270
Registriert: Sonntag 21. Oktober 2012, 17:20

@Contrean: das ist der übliche Fehler, dass man sich eine Referenz auf die PhotoImage-Instanz merken muß. Das geht natürlich nicht, wenn man keine Klasse hat, an der man die Instanz binden könnte.
Zusätzlich sind natürlich die nackten excepts falsch.
Contrean
User
Beiträge: 7
Registriert: Donnerstag 22. November 2018, 21:06

__blackjack__ hat geschrieben: Donnerstag 4. April 2019, 17:17 @Contrean: Verwende keine nackten ``excep:``\s ohne die konkreten Ausnahmen die Du erwartest. Ich vermute jetzt einfach mal, dass Dir diese unsinnige Ausnahmebehandlung die Fehlermeldung verschluckt.
1. Wenn etwas nicht funktioniert wird über den Befehl exceptions.nobgimg() nur ein Fenster erstellt, welches sagt, dass ein Bug vorliegt. 'nobgimg' steht für No Background Image.
2. Wenn ich es ohne try und except mache, gibt er mir trotzdem keine Fehlermeldung/
Benutzeravatar
__blackjack__
User
Beiträge: 14042
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Contrean: `exceptions` ist auch kein guter Name für ein Modul, denn damit verdeckt man dann das gleichnamige Modul aus der Standardbibliothek. Einer der Gründe warum es sinnvoll ist bei Programmen die aus mehr als einem Modul bestehen, diese in einem Package zusammen zu fassen, damit man eine möglichst kleine Angriffsfläche im Namensraum auf oberster Ebene bietet.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
Antworten