Python, индекс кортежа вне допустимого диапазона

Я хочу отобразить изображение в своем корневом окне, но оно говорит

IndexError: индекс кортежа вне допустимого диапазона

Вы знаете, что не так?
Вот мой код:

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()

Сообщение об ошибке:

Отслеживание (последний последний вызов):
Файл "C:\Users\Marrin\Desktop\Uni\EPR\ImagineEditor_EPR9\openImageInTkinter.py", строка 16, в
w.create_image( image = photo)
Файл "C:\Users\Marrin\Anaconda2\lib\lib-tk\Tkinter.py", строка 2314, в create_image
return self._create('image', args, kw)
Файл "C :\Users\Marrin\Anaconda2\lib\lib-tk\Tkinter.py", строка 2298, в _create
cnf = args[-1]
IndexError: индекс кортежа вне допустимого диапазона


person FastBatteryCharger    schedule 30.12.2015    source источник


Ответы (2)


Вы не можете использовать Tkinter.Canvas.create_image без указания координат. Чтобы ваш пример работал как задумано, вы должны указать координаты, где находится ваше изображение; имейте в виду, что такие координаты относятся к центру вашего изображения.

Что касается вашего примера, вы можете сделать что-то вроде этого:

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

Обратите внимание, что я также указал привязку «северо-запад», так что координата (0, 0) относится к верхней/крайней левой точке вашего изображения (привязка по умолчанию относится к центральной точке изображения).

person Paolo Bernardi    schedule 30.12.2015
comment
ааа теперь я понимаю! - person FastBatteryCharger; 30.12.2015

create_image необходимая позиция в качестве первого аргумента

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

person furas    schedule 30.12.2015