CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourHigh-Tech
    • Actus High-Tech
    • Hardware
    • Smartphones
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • High-Tech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[PYTHON] Tkinter problème "AttributeError: Event instance has no attribute '__getitem__'"

estelle281997
estelle281997
Niveau 1
21 avril 2017 à 01:32:12

Bonsoir,
dans le cadre d'un projet informatique je dois créer un logiciel de traitement d'images.
J'ai donc créé plusieurs fonctions qui traitent une liste de listes représentant les pixels de mon image (pour appliquer par exemple une symétrie à l'image).
J'utilise ensuite .bind pour associer mes fonctions à des boutons

mon script ressemble à ça :

import Tkinter as TK
from PIL import Image as img
from PIL import ImageTk as imTK
import numpy as np

uneImage=img.open('CARRE NB.jpg')
uneImage=uneImage.convert('L') #conversion en N&B
tabImage=np.array(uneImage)
lImage=tabImage.tolist()

tabImage2=np.asarray(lImage)
lImage2=img.fromarray(tabImage2)
lImage2=lImage2.convert('L')
lImage2.save('test2.jpg')

!!!!! FONCTIONS !!!!!
def symetrieh(lImage):
L=lImage
return L[::-1]

def ImSymH(lImage):
L=symetrieh(lImage)
tabImage=np.array(L)
Im=img.fromarray(tabImage)
lImage2=imTK.PhotoImage(Im)
zone_dess.create_image(200,450,image=lImage2)

INTERFACE GRAPHIQUE
zone_dess= TK . Canvas (fen , height=600 , width=1000 , bg="red", cursor="tcross")
zone_dess.pack(side="right")
Image=imTK.PhotoImage(uneImage)
zone_dess.create_image(200,200,image=Image)

CREATION ET PARAMETRES DE LA ZONE DE COMMANDES
zone_commandes = TK . Frame (fen)
zone_commandes.pack(side="left")

bout_1 = TK . Button ( zone_commandes , text = "Symetrie H", cursor="target")
bout_1.bind("<Button-1>", ImSymH)
bout_1.pack(side="bottom")

Et quand je clique sur le fameux bouton dans l'interface graphique j'obtiens un message d'erreur sur la console python :

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1536, in __call__
return self.func(*args)
File "F:/PROJET/*******.py", line 37, in ImSymH
L=symetrieh(lImage)
File "F:/PROJET/*******.py", line 34, in symetrieh
return L[::-1]
AttributeError: Event instance has no attribute '__getitem__'

Si quelqu'un pouvait m'expliquer ce que signifient ces messages et comment résoudre le problème svp
Merci d'avance :)

-[Franckyi]-
-[Franckyi]-
Niveau 10
21 avril 2017 à 11:03:27

Ta variable L et donc ta variable lImage ne sont probablement pas des listes, donc ton slicing ligne 34 ne fonctionne pas.

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment