6

I've spent some time looking online and so far haven't found anything that answers this without using PIL, which i can't get to work is there another way to do this simply?

3
  • Are you using PIL or Pillow? Commented Jan 26, 2016 at 21:32
  • what means i can't get to work ? Do you can't install ? Do you get error message ? image disappears (very common problem) ? Commented Jan 26, 2016 at 21:42
  • Possible duplicate of Cannot Display an Image in Tkinter Commented Nov 25, 2017 at 19:36

3 Answers 3

13

tkinter has a PhotoImage class which can be used to display GIF images. If you want other formats (other than the rather outdated PGM/PPM formats) you'll need to use something like PIL or Pillow.

import Tkinter as tk

root = tk.Tk()
image = tk.PhotoImage(file="myfile.gif")
label = tk.Label(image=image)
label.pack()
root.mainloop()

It's important to note that if you move this code into a function, you may have problems. The above code works because it runs in the global scope. With a function the image object may get garbage-collected when the function exits, which will cause the label to appear blank.

There's an easy workaround (save a persistent reference to the image object), but the point of the above code is to show the simplest code possible.

For more information see this web page: Why do my Tkinter images not appear?

Sign up to request clarification or add additional context in comments.

5 Comments

Thank you this is great, problem was my college wont let extra python modules such as PIL or Pillow to be installed on the system. :)
Sorry, when I tried it in my program it only shows a blank square where I would expect to see the image, so it must open the image as the dimensions are correct but it isn't displaying what is in the image?
Found the adding a line, label.image = image, made the image appear as it kept a reference. This works with .png files too.
The links are not functional. Kindly update.
@Zia: thanks for alerting me. I've fixed the links.
0

You can use PIL library which available for python 3. First, you need to install PIL using this command (using pip): pip install pillow then:

`from tkinter import *`

from PIL import Image, ImageTk

`class Window(Frame):`

    `def __init__(self, master=None):
        Frame.__init__(self, master)
        self.master = master
        self.pack(fill=BOTH, expand=1)
        load = Image.open("parrot.jpg")
        render = ImageTk.PhotoImage(load)
        img = Label(self, image=render)
        img.image = render
        img.place(x=0, y=0)`

Comments

-2

Luke, this is too late , however may help others. Your image has to be in the same sub directory with .py script. You can also type './imageFileName.png'

1 Comment

This is not true - the image can be anywhere in your filesystem. You just need to give a correct path to the file.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.