Como fazer uma imagem clicável em python

Aug 29 2020

Sou um novato em programação de imagens python. Se eu clicar na imagem que preciso exibir, você será 1. clicado na imagem. o que tentei até agora anexei abaixo. Não está funcionando, a resposta exibida img 1, img 1, img 1 sempre

from tkinter import *
from tkinter import messagebox

from PIL import Image, ImageTk

root = Tk()
canvas = Canvas(root, width=600, height=600)
canvas.pack()

def click() :
    canvas.img = img
    canvas.img1 = img1
    canvas.img2 = img2

    if(canvas.img):
        print("img 1")
    elif(canvas.img1):
        print("2")
    else :
        print("3")

img_file = Image.open("1.jpg")
img_file = img_file.resize((150, 150) )
img = ImageTk.PhotoImage(img_file )
canvas.create_image(10, 50, anchor=NW, image=img)


img_file1 = Image.open("2.jpg")
img_file1 = img_file1.resize((150, 150))
img1 = ImageTk.PhotoImage(img_file1)
canvas.create_image(200, 50, anchor=NW, image=img1)

img_file2 = Image.open("3.jpg")
img_file2 = img_file2.resize((150, 150))
img2 = ImageTk.PhotoImage(img_file2)
canvas.create_image(400, 50, anchor=NW, image=img2)

Button(root, text="Add",command = click,height=3, width= 13).place(x=190, y=260)



root.mainloop()

Respostas

1 CoolCloud Aug 29 2020 at 06:34

Dê uma olhada neste exemplo

Aqui você pode clicar no botão e terá o efeito de clicar na imagem.

from tkinter import *
from tkinter import messagebox
from PIL import Image, ImageTk

root = Tk()
canvas = Canvas(root, width=600, height=600)
canvas.pack()

def main(event):
    if event.widget.cget('image') == 'pyimage1':
        messagebox.showinfo('First','You clicked the first image')
    elif event.widget.cget('image') == 'pyimage2':
        messagebox.showinfo('Second','You clicked the second image')
    elif event.widget.cget('image') == 'pyimage3':
        messagebox.showinfo('Third','You clicked the third image')

img_file = Image.open("sad songs.jpg")
img_file = img_file.resize((150, 150))
img = ImageTk.PhotoImage(img_file)
b1 = Button(canvas, image=img)
b1.pack()
b1.bind('<Button-1>', main)


img_file1 = Image.open("feeling wallpapers.jpg")
img_file1 = img_file1.resize((150, 150))
img1 = ImageTk.PhotoImage(img_file1)
b2 = Button(canvas, image=img1)
b2.pack()
b2.bind('<Button-1>', main)

img_file2 = Image.open("sad songs.jpg")
img_file2 = img_file2.resize((150, 150))
img2 = ImageTk.PhotoImage(img_file2)
b3 = Button(canvas, image=img2)
b3.pack()
b3.bind('<Button-1>', main)

root.mainloop()

Espero que tenha ajudado você

Felicidades