Seite 1 von 1

Label wird nicht angezeigt (Tkinter)

Verfasst: Donnerstag 4. April 2019, 17:10
von Contrean
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()

Re: Label wird nicht angezeigt (Tkinter)

Verfasst: Donnerstag 4. April 2019, 17:17
von __blackjack__
@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.

Re: Label wird nicht angezeigt (Tkinter)

Verfasst: Donnerstag 4. April 2019, 18:14
von Sirius3
@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.

Re: Label wird nicht angezeigt (Tkinter)

Verfasst: Donnerstag 4. April 2019, 18:33
von Contrean
__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/

Re: Label wird nicht angezeigt (Tkinter)

Verfasst: Donnerstag 4. April 2019, 23:45
von __blackjack__
@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.