IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

import ou from [Fait]


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 293
    Par défaut import ou from
    Voici un exemple (trouvé sur ce site) et qui fonctionne très bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    from PIL import Image, ImageTk 
    import  Tkinter as Tk
    root = Tk.Tk() 
    
    monimage = Image.open("retour2.png")    
    photo = ImageTk.PhotoImage(monimage)  
    
    label = Tk.Label(image=photo)    
    label.image = photo 			
    label.pack()
    
    root.mainloop()
    J'ai besoin cependant de modifié la ligne en rouge par from Tkinter import *pour l'adapter à mon script. Mais là tout se gâte...

    Voici les modifications:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    from PIL import Image, ImageTk 
    from Tkinter import *
    root = Tk() 
    
    monimage = Image.open("retour2.png")    
    photo = ImageTk.PhotoImage(monimage)  
    
    label = Label(image=photo)    
    label.image = photo 			
    label.pack()
    
    root.mainloop()
    et voici le message d'erreur que j'obtiens :
    Traceback (most recent call last):
    File "image avec Pil 2.py", line 6, in ?
    monimage = Image.open("retour2.png")
    AttributeError: class Image has no attribute 'open'


    Je ne comprends pas et d'avance remercie tous ceux qui voudront bien m'aider.

  2. #2
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    C'est qu'à priori Tkinter possède aussi un module Image (d'où l'une des raisons de ne jamais faire de from ... import * )

    essaie en inversant les 2 imports
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    from Tkinter import *
    from PIL import Image, ImageTk
    par contre, si tu es sous windows avec la version de pil1.1.6b2, fais attention, il y a l'air de manquer le fichier _imagingtk.pyd dans la distribution (donc installer avant pil 1.1.5 pour que ce fichier soit présent)

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 293
    Par défaut
    Merci d'avoir répondu.
    J'ai effectivement un problème d'import et c'était la ligne :
    from Tix import*
    Je modifie donc cet import ainsi que mes fonctions Ballon() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    from Tkinter import *
    from PIL import Image, ImageTk 
    import Tix
     
    root = Tk() 
     
    monimage = Image.open("retour2.png")    
    photo = ImageTk.PhotoImage(monimage)  
     
    label = Label(image=photo)    
    label.image = photo 			
    label.pack()
     
    b1=Button(root,text='Cliquer !').pack()
    bulle1 = Tix.Balloon() 
    bulle1.bind_widget(b1, msg='Bonjour')
     
    root.mainloop()
    ...et la j'obtiens le message d'erreur suivant :

    Traceback (most recent call last):
    File "image avec Pil 2.py", line 17, in ?
    bulle1 = Tix.Balloon()
    File "C:\Python24\lib\lib-tk\Tix.py", line 526, in __init__
    TixWidget.__init__(self, master, 'tixBalloon', static, cnf, kw)
    File "C:\Python24\lib\lib-tk\Tix.py", line 307, in __init__
    self.tk.call(widgetName, self._w, *extra)
    _tkinter.TclError: invalid command name "tixBalloon"

  4. #4
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    Si tu utilises Tix, ta fenêtre princiaple doit être déclarée depuis Tix

    =>

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 293
    Par défaut
    Je modifie mon code :
    from Tkinter import *
    from PIL import Image, ImageTk
    import Tix

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    root = Tix.Tk() 
     
    monimage = Image.open("retour2.png")    
    photo = ImageTk.PhotoImage(monimage)  
     
    label = Label(image=photo)    
    label.image = photo 			
    label.pack()
     
    b1=Button(root,text='Cliquer !').pack()
    bulle1 = Tix.Balloon() 
    bulle1.bind_widget(b1, msg='Bonjour')
     
    root.mainloop()
    et là j'obtiens le message :

    Traceback (most recent call last):
    File "image avec Pil 2.py", line 18, in ?
    bulle1.bind_widget(b1, msg='Bonjour')
    File "C:\Python24\lib\lib-tk\Tix.py", line 535, in bind_widget
    self.tk.call(self._w, 'bind', widget._w, *self._options(cnf, kw))
    AttributeError: 'NoneType' object has no attribute '_w'

  6. #6
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    http://python.developpez.com/faq/?pa...AttributeError

    (comme quoi on trouve tout ou presque dans la FAQ)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Import table from a server
    Par pnoel-bi dans le forum OTIC (ex-Genio)
    Réponses: 2
    Dernier message: 30/07/2012, 10h53
  2. Paramètres Data Import/Export from Workspace
    Par Billythecrack dans le forum Simulink
    Réponses: 2
    Dernier message: 24/09/2010, 06h19
  3. from xml.marshal import generic
    Par Gldev_comp dans le forum Général Python
    Réponses: 2
    Dernier message: 10/07/2008, 16h40
  4. import / copy folder from file system
    Par chichone dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 13/06/2008, 16h10
  5. [SQL-SERVER]Importing data from external sources
    Par poosh dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/04/2006, 13h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo