Ошибка PhotoImage.zoom () - PullRequest
       7

Ошибка PhotoImage.zoom ()

1 голос
/ 02 декабря 2011

В настоящее время я работаю над приложением, которое считывает интенсивности из файлов .txt, а затем преобразует интенсивности в RGB, прежде чем отобразить их изображение.Сейчас я делаю это, создавая пустой объект tkinter.PhotoImage и затем заполняя пиксели данными RGB.До этого момента все работало нормально, но когда я пытаюсь использовать функцию PhotoImage.zoom () для масштабирования изображения, чтобы оно соответствовало моему холсту, я получаю:

>>>resizedImage = image.zoom(30)
Traceback (most recent call last):
File "<pyshell#15>", line 1, in <module>
rIm = im.zoom(30)
File "C:\Python32\lib\tkinter\__init__.py", line 3249, in zoom
self.tk.call(destImage, 'copy', self.name, '-zoom',x,y)
_tkinter.TclError: invalid command name "pyimage4"

Исходное изображение будет отлично рисоваться.Единственный раз, когда я получаю ошибку, это когда я пытаюсь увеличить.Я просмотрел документацию и файлы tkinter и нигде не могу найти эту ошибку.

Функция, которая создает исходное изображение, следующая:

def drawImage(filename, xPoints, yPoints, measurement, max, min):
xPosition = xPoints
yPosition = yPoints
im = PhotoImage(width = xPoints, height = yPoints)
for i in range(1, xPoints * yPoints + 1):

    tmp = linecache.getline(filename +'_raw_' + str(i) + '.txt', measurement)
    if eval(tmp[0:5]) < 100:
        wavelength = eval(tmp[0:5])
        intensity = eval(tmp[9:])
    elif eval(tmp[0:5]) >= 100 and eval(tmp[0:5]) < 1000:
        wavelength = eval(tmp[0:6])
        intensity = eval(tmp[10:])
    elif eval(tmp[0:5]) >= 1000:
        wavelength = eval(tmp[0:7])
        intensity = eval(tmp[11:])

    RGB = wav2RGB(wavadjust(intensity, max, min))

    im.put(RGB, (xPosition -1, yPosition - 1))
    xPosition -= 1
    if xPosition == 0:
        xPosition = xPoints
        yPosition -= 1
return im

wavadjust принимаетизмерение, наряду с минимальными и максимальными измерениями (читайте в другом месте) и распространяет измерения, чтобы дать более широкий диапазон цветов при преобразовании в RGB.wav2RGB берет настроенное измерение, преобразует его в RGB и возвращает кортеж.

Таким образом, фактическое создание изображения выглядит следующим образом:

image = drawImage(filename, xPoints, yPoints, initMeasurement, max, min)
resizedImage = image.zoom(30)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...