Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
980 views
in Technique[技术] by (71.8m points)

python - PhotoImage not showing up the image associated with it

I am very new to tkinter and I notice that when I try to add a picture as a background to my window, it just won't show up. Here's the code.

from tkinter import *

root = Tk()

def cheese():
    root.destroy()

logo = PhotoImage('../Desktop/logothing.gif')
background_label = Label(root, image=logo)
background_label.place(x=0, y=0, relwidth=1, relheight=1)

explanation = """Flaming Arrows whizz over your hair, War rages around you. Suddenly,
it charges into you. A 8 foot tall mechanical beast the enemy have been training for war.
You have no chance but to fight it. You swing your sword as hard as you can...Only to
leave a minor dent on it's armor. With one blow from its club, you fall unconscious."""

w = Label(root, image=logo).pack(side='right')
w1 = Button(root, text = 'Wake Up',command = cheese, fg='blue', font = "Impact 20")
w1.pack(side='bottom')

w2 = Label(root, 
           justify=LEFT, 
           text=explanation,
           compound = CENTER,
           fg="blue", padx=0,font="ComicSansMS 32 bold")
w2.pack(side='left')
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

You need to specify the option by using file. PhotoImage(file = "foo.gif")

Also, as said in PhotoImage's page on effbot,

You must keep a reference to the image object in your Python program, either by storing it in a global variable, or by attaching it to another object.

from tkinter import *

root = Tk()
def cheese():
    root.destroy()
logo = PhotoImage(file = '../Desktop/logothing.gif')
background_label = Label(root, image=logo)
background_label.image = logo
background_label.place(x=0, y=0, relwidth=1, relheight=1)
explanation = """Flaming Arrows whizz over your hair, War rages around you. Suddenly,
it charges into you. A 8 foot tall mechanical beast the enemy have been training for war.
You have no chance but to fight it. You swing your sword as hard as you can...Only to
leave a minor dent on it's armor. With one blow from its club, you fall unconscious."""
w= Label(root, image=logo).pack(side='right')
w1 = Button(root, text = 'Wake Up',command = cheese, fg='blue', font = "Impact 20")
w1.pack(side='bottom')

w2 = Label(root, 
           justify=LEFT, 
           text=explanation,
           compound = CENTER,
           fg="blue", padx=0,font="ComicSansMS 32 bold")
w2.pack(side='left')

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...