2017-06-29 3 views
0

Je suis en train de charger dans une image du même dossier que celui que mon script python estne peut pas importer le nom 'ImageTk' -. Python 3.5

# create a class called Person 
# create init method 
# 2 attributes (name, and birthdate) 
# create an object from the Person class 

from PIL import Image, ImageTK 
import datetime 
import tkinter as tk 

# create frame 
window = tk.Tk() 

# create frame geometry 
window.geometry("400x400") 

# set title of frame 
window.title("Age Calculator App") 



# adding labels 
name_label = tk.Label(text="Name") 
name_label.grid(column=0, row=0) 

year_label = tk.Label(text="Year") 
year_label.grid(column = 0, row = 1) 

month_label = tk.Label(text="Month") 
month_label.grid(column = 0, row = 2) 

day_label = tk.Label(text="Day") 
day_label.grid(column = 0, row = 3) 


# adding entries 
name_entry = tk.Entry() 
name_entry.grid(column=1, row=0) 

year_entry = tk.Entry() 
year_entry.grid(column=1, row=1) 

month_entry = tk.Entry() 
month_entry.grid(column=1, row=2) 

day_entry = tk.Entry() 
day_entry.grid(column=1, row=3) 


def calculate_age(): 
    year = int(year_entry.get()) 
    month = int(month_entry.get()) 
    day = int(day_entry.get()) 
    name = name_entry.get() 
    person = Person(name, datetime.date(year, month, day)) 
    text_answer = tk.Text(master=window, wrap=tk.WORD, height=20, width=30) 
    text_answer.grid(column= 1, row= 5) 
    answer = "{name} is {age} years old!".format(name=person.name, age=person.age()) 
    is_old_answer = " Wow you are getting old aren't you?" 
    text_answer.insert(tk.END, answer) 
    if person.age() >= 50: 
     text_answer.insert(tk.END, is_old_answer) 


calculate_button = tk.Button(text="Calculate Age!", command=calculate_age) 
calculate_button.grid(column=1, row=4) 


class Person: 
    def __init__(self, name, birthdate): 
     self.name = name 
     self.birthdate = birthdate 

    def age(self): 
     today = datetime.date.today() 
     age = today.year - self.birthdate.year 
     return age 

image = Image.open('LockVectorDaily.jpg') 
image.thumbnail((100, 100), Image.ANTIALIAS) 
photo = tk.PhotoImage(file=image) 
label_image = tk.Label(image=image) 
label_image.grid(column=1, row=0) 


window.mainloop() 

je suis arrivé

from PIL import Image, ImageTK 
ImportError: cannot import name 'ImageTK' 

Remerciez vous d'avance pour l'aide!

+0

Comment avez-vous installé PIL? Il y a un problème avec l'installation. – abccd

+1

Le "k" est en minuscule, ImageTk. Les majuscules/minuscules ont beaucoup de monde dans Tkinter/tkinter. –

Répondre

-1

Tout compris! Vous devez les importer séparément et non sur une seule ligne.

from PIL import Image 
from PIL import ImageTk 

Insead de

from PIL import Image, ImageTk 
+0

Avez-vous essayé cela? cela ne fonctionne pas en python 3.5 – nbubis

+0

Les deux cas sont équivalents. Cela fonctionne parce que vous avez remplacé le 'ImageTK' de la question par 'ImageTk' qui est le bon nom. –

0

Je l'ai fait:

sudo apt-get install python-imaging python-imaging-tk 

pour python3

sudo apt-get install python3-pil python3-pil.imagetk 

et obtenu:

Reading package lists... Done 
Building dependency tree  
Reading state information... Done 
Note, selecting 'python-pil.imagetk' instead of 'python-imaging-tk' 

et il a installé la nouvelle bibliothèque et cela a fonctionné pour moi.

+0

Ceci est pour les utilisateurs Debian/Ubuntu. Je pense que la partie 'ImageTk' est incluse dans la version windows du module' Pillow' (fork of PIL). Pour les utilisateurs d'Archlinux, la commande d'installation est 'sudo pacman -S python-pillow'. –