codeforfood
codeforfood

Reputation: 439

Displaying .jpg image when button is clicked in Tkinter?

This seems like a pretty straightforward question, but i am having trouble displaying a jpg image when a button is clicked. Here is my code (without the button code for the sake of time):

from tkinter import *

#screen stuff here

canvas = Canvas(app)
canvas.grid(row = 0,column = 0)
photo = PhotoImage(file = "test.jpg")
canvas.create_image(0,0, image = photo)


def show_image():
    global canvas
    global photo
    canvas.create_image(0,0, image = photo)

#button that calls the function down here

Thanks!

Upvotes: 1

Views: 7906

Answers (1)

unutbu
unutbu

Reputation: 881037

This works with Python2:

import Tkinter as tk
import ImageTk

def show_image():
    x = canvas.create_image(125, 125, image=tk_img)
    while True:
        print('show')
        canvas.itemconfigure(x, state=tk.NORMAL)
        button.configure(text = 'Hide')
        yield
        print('hide')        
        canvas.itemconfigure(x, state=tk.HIDDEN)
        button.configure(text = 'Show')        
        yield

root = tk.Tk()
canvas = tk.Canvas(root, width=250, height=250)
canvas.grid(row=0, column=0)
tk_img = ImageTk.PhotoImage(file='image.png')

button = tk.Button(
    root, text="Show", command=show_image().next, anchor='w',
    width=10, activebackground="#33B5E5")
button.grid(row=1, column=0)
root.mainloop()

In Python3, PhotoImage can open GIF, PPM/PGM images. To open other formats, you may need to install Pillow (a fork of the PIL project for Python3).

Upvotes: 1

Related Questions