Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Image in Tkinter Label?

I am new to python GUI programming, I want to add a image in my tkinter label, I have created the following code but the window is not showing my image. Path of image is the same folder as this code.

import ImageTk
import Tkinter as tk
from Tkinter import *
from PIL import Image


def make_label(master, x, y, w, h, img, *args, **kwargs):
    f = Frame(master, height = h, width = w)
    f.pack_propagate(0) 
    f.place(x = x, y = y)
    label = Label(f, image = img, *args, **kwargs)
    label.pack(fill = BOTH, expand = 1)
    return label


if __name__ == '__main__':
    root = tk.Tk()
    frame = tk.Frame(root, width=400, height=600, background='white')
    frame.pack_propagate(0)
    frame.pack()
    img = ImageTk.PhotoImage(Image.open('logo.png'))
    make_label(root, 0, 0, 400, 100, img)
    root.mainloop()
like image 599
Shivamshaz Avatar asked Sep 02 '14 07:09

Shivamshaz


People also ask

Does tkinter work with JPG?

Tkinter relies on Pillow for working with images. Pillow is a fork of the Python Imaging Library, and can be imported in a Python console as PIL. Pillow has the following characteristics: Support for a wide range of image file formats, including PNG, JPEG and GIF.


2 Answers

For debugging purpose try to avoid the use of PIL and load some *.gif (or another acceptable) file directly in PhotoImage, like shown below, if it'll work for you then just convert your image in *.gif or try to deal with PIL.

from tkinter import *

def make_label(parent, img):
    label = Label(parent, image=img)
    label.pack()

if __name__ == '__main__':
    root = Tk()
    frame = Frame(root, width=400, height=600, background='white')
    frame.pack_propagate(0)    
    frame.pack()
    img = PhotoImage(file='logo.gif')
    make_label(frame, img)

    root.mainloop()
like image 174
Artem Avatar answered Sep 27 '22 16:09

Artem


       img = Image.open('image_name')
       self.tkimage = ImageTk.PhotoImage(img)
       Label(self,image = self.tkimage).place(x=0, y=0, relwidth=1, relheight=1)
like image 40
Sardorbek Muhtorov Avatar answered Sep 27 '22 17:09

Sardorbek Muhtorov