Попытка решить проблему: у объекта «Изображение» нет атрибута «имя» в Python 3.5 - PullRequest
0 голосов
/ 26 августа 2018

Я пытаюсь построить графический интерфейс для приложения.Следующий код работает нормально, когда я использую код в качестве функции.Это не показывает ошибок.Но когда я использую это в классе, это становится сумасшедшим.Он продолжает выдавать ошибку: объект изображения не имеет имени атрибута или какого-либо другого.Я не знаю, как решить эту проблему, пожалуйста, кто-то может мне помочь с этим.Спасибо

from PIL import Image as Img
from wand.image import Image
import uuid
import numpy as np
import glob
import os
import sys

from tkinter import filedialog
from tkinter.filedialog import askopenfilename 
from tkinter import *
import tkinter as tk   




class TkFileDialogExample(tk.Frame):

    def __init__(self, root):
        tk.Frame.__init__(self, root)
        button_opt = {'fill': tk.constants.BOTH, 'padx': 10, 'pady': 10}
        tk.Button(self, text='Individual files', command=self.askopenfilename).pack(**button_opt)
        self.file_opt = options = {}
        options['defaultextension'] = '.txt'
        options['filetypes'] = [('all files', '.*'), ('files', '.pdf')]
        options['initialdir'] = 'C:\\Users\\myfolder\\Pictures'
        options['parent'] = root


    def askopenfilename(self):
        filename = filedialog.askopenfilename(**self.file_opt)
        filename_temp = str(filename)[1:-2]
        print(filename_temp)

        if len(filename_temp) == 0: 
            result = Label(text="Err.. : file not selected", fg="red").pack(padx=105, pady=2)
        else:

            filepdf = filename_temp[1:-1]
            filepdf = filepdf.replace('/', '\\')
            try:
                print('file name is ',filepdf)
                with Image(filename=filepdf, resolution=200) as img:
                    img.compression_quality = 99
                    #save it to tmp name
                    img.save(filename='C:\\Users\\myfolder\\Pictures\\%s.jpeg') 
            except Exception as err:
                print(err)
                return False
        result = Label(text="Done Successfully !" , fg="blue").pack(padx=105, pady=2)
        return   result


if __name__ == '__main__': 
    root = tk.Tk()
    TkFileDialogExample(root).pack()
    Label(text="Log : ", fg="blue").pack(padx=100, pady=5)
    root.mainloop()

Это ошибка, которую я получаю, когда запускаю код:

Exception ignored in: <bound method Image.__del__ of <tkinter.Image object at 0x0000000007799F28>>
    Traceback (most recent call last):
      File "c:\Python3\lib\tkinter\__init__.py", line 3499, in __del__
        if self.name:
    `AttributeError: 'Image' object has no attribute 'name''

1 Ответ

0 голосов
/ 26 августа 2018

Вы импортировали PIL Image как Img, вам не нужно писать Image, но Img везде, где вы хотите использовать имя атрибута

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...