pythonuser-interfacetkinterbackground-imagephotoimage

Tkinter Background Image not showing up


I am trying to create a weather App in Tkinter GUI. It is working fine. I want to add a background image to it but it wont show up. initially i did it without the reference line but it didnt work. On some website they said to keep reference of the image but that too didnt work. Also my Tkinter window size is 1920x1080 and the image was of same dimension but it still doesnt show up. I tried to reduce image size than window but still not working. Any suggestions accepted. Also there is no error.

bg = PhotoImage('clearsky2.jpg')
bgl = Label(gui,image=bg)
bgl.image = bg #given a reference
bgl.place(x=0, y=0, relwidth=1,relheight=1)
bgl.pack()

Solution

  • Its sad that tkinter.PhotoImage does not support JPEG files, but it does support PNG in the newer version and has proper support for GIF too. To use JPEG you need PIL installed. In the terminal say:

    pip install Pillow
    

    After that import it like:

    from PIL import Image,ImageTk
    

    Then now, to open the image with PIL, say:

    img_file = Image.open('clearsky2.jpg')
    bg = ImageTk.PhotoImage(img_file)
    bgl = Label(gui,image=bg)
    bgl.place(x=0, y=0, relwidth=1,relheight=1)
    

    This will work with JPEG and PNG files as well and, keep in mind you dont need to keep a reference unless your looping over images or creating image inside of a function.

    Hope it cleared your problem, do let me know if any more errors

    Cheers