Je veux afficher une image dans ma fenêtre racine, mais elle dit

IndexError: index de tuple hors limites

Savez-vous ce qui ne va pas?
Voici mon code:

import numpy
import cv2
from Tkinter import *
from PIL import Image, ImageTk

root = Tk()#

lena = "C:\lena.jpg"

#convert jpg
image = Image.open(lena)
photo = ImageTk.PhotoImage(image)


w = Canvas(root)
w.create_image( image = photo)
w.pack()


root.mainloop()

Message d'erreur:

Traceback (dernier appel le plus récent):
Fichier "C: \ Users \ Marrin \ Desktop \ Uni \ EPR \ ImagineEditor_EPR9 \ openImageInTkinter.py", ligne 16, dans
w.create_image (image = photo)
Fichier "C: \ Users \ Marrin \ Anaconda2 \ lib \ lib-tk \ Tkinter.py", ligne 2314, dans create_image
retourne self._create ('image', args, kw)
Fichier "C: \ Users \ Marrin \ Anaconda2 \ lib \ lib-tk \ Tkinter.py", ligne 2298, dans _create
cnf = args [-1]
IndexError: index de tuple hors de portée

1
FastBatteryCharger 30 déc. 2015 à 17:06

2 réponses

Meilleure réponse

Vous ne pouvez pas utiliser Tkinter.Canvas.create_image sans spécifier les coordonnées. Pour que votre exemple fonctionne comme prévu, vous devez spécifier les coordonnées où votre image est placée; gardez à l'esprit que ces coordonnées se réfèrent au centre de votre image.

À propos de votre exemple, vous pouvez faire quelque chose comme ceci:

w = Canvas(root)
w.pack()
w.create_image(0, 0, image=photo, anchor="nw")

Veuillez noter que j'ai également spécifié un ancrage "Nord-Ouest", de sorte que la coordonnée (0, 0) se réfère au point supérieur / gauche de votre image (l'ancrage par défaut se réfère au point central de l'image).

2
Paolo Bernardi 30 déc. 2015 à 14:27

create_image position requise comme premier argument

http://effbot.org/tkinterbook/canvas.htm#Tkinter.Canvas.create_image-method

0
furas 30 déc. 2015 à 14:29