LuGibs
LuGibs

Reputation: 190

How to load an image into a python 3.4 tkinter window?

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?

Upvotes: 6

Views: 35205

Answers (3)

Bryan Oakley
Bryan Oakley

Reputation: 386382

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?

Upvotes: 13

Pedram Nouri
Pedram Nouri

Reputation: 1

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)`

Upvotes: 0

Sentekin Can
Sentekin Can

Reputation: 1

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'

Upvotes: -2

Related Questions