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 :

Mettre une Image dans un Text() sous Python 3


Sujet :

Tkinter Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2011
    Messages : 58
    Points : 39
    Points
    39
    Par défaut Mettre une Image dans un Text() sous Python 3
    Bonsoir,

    Je ne parviens pas à insérer une image .gif dans un widget Text() sous Python 3

    Voici le code qui ne fonctionne pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    from tkinter import *
     
    fenetre = Tk()
     
    photo = PhotoImage(file ='smiley2.gif')
     
    txt = Text(fenetre)
    txt.pack()
     
    txt.create_image(image=photo)
     
    root.mainloop()
    Pourriez-vous me dire comment faire?

    Avec mes remerciements.

  2. #2
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    from tkinter import *
     
    fenetre = Tk()
     
    photo = PhotoImage('smiley2.gif')
     
    txt = Text(fenetre)
    txt.pack()
     
    txt.image_create(END, image=photo)
     
    fenetre.mainloop()
    <nomduwidgettexte>.image_create(<position dans le widget texte>, image=photo)*

    @+

    * En fait .image_create(index, cnf={}, **kw) mais commencez avec cela
    Merci d'utiliser le forum pour les questions techniques.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2011
    Messages : 58
    Points : 39
    Points
    39
    Par défaut
    Super et merci PauseKawa, ça fait 3 heures que je galère sur ce truc!

    Si je peux abuser de vos connaissances...

    Je viens d'essayer de mettre mon image au milieu d'un texte en utilisant l'option "index" car je pensais que "index" permettait de positionner l'image à un endroit précis du widget "Text", mais j'obtiens un message d'erreur: ' _tkinter.TclError: bad text index "5" '

    Pouvez-vous me dire à quoi sert l'option "index"?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    from tkinter import *
     
    fenetre = Tk()
     
    photo = PhotoImage(file='smiley2.gif')
     
    txt = Text(fenetre)
    txt.pack()
     
    txt.insert(END,'Test du widget text')
     
    txt.image_create(5, image=photo)
     
    fenetre.mainloop()

  4. #4
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    from tkinter import *
     
    fenetre = Tk()
     
    photo = PhotoImage(file='smiley2.gif')
     
    txt = Text(fenetre)
    txt.pack()
     
    txt.insert(END, 'Ceci est une image  Pas mal non ?')
    txt.image_create(1.19, image=photo)
     
    fenetre.mainloop()
    Le Widget Text est fait pour afficher du texte, il travaille donc sur du 'caractère', un .image_create occupe un 'caractère'. C'est, a mon sens, le Widget le plus dur a appréhender de pars cette approche (ligne.caractere).

    Ceci dit que cherchez vous a faire ?
    Avez vous besoin d'écrire du texte ou d'afficher une image au milieu d'un texte ?

    @+
    Merci d'utiliser le forum pour les questions techniques.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2011
    Messages : 58
    Points : 39
    Points
    39
    Par défaut
    En fait, j'essayais de faire l'exercice "Text + Scroolbar" de Gérard SWINNEN
    (p. 239) et je n'arrivais pas à afficher une image au milieu du texte du "Corbeau et le Renard".

    Et donc, avant d'aller plus loin, j'ai essayé d'écrire quelques lignes de code pour m'entraîner.

    Et là, impossible d'y arriver.

    Mais votre nouveau script et vos explications (ligne.caractere) m'ont permis de comprendre comment cela marchait.

    Si j'ai bien compris, pour un index égal à 1.19, l'image ira se mettre après le
    19ème caractère de la première ligne?

  6. #6
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    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
    from tkinter import *
     
    fenetre = Tk()
     
    photo = PhotoImage(file='smiley2.gif')
     
    txt = Text(fenetre)
    scroll = Scrollbar(fenetre, command=txt.yview)
    txt.configure(yscrollcommand=scroll.set)
    txt.pack(side=LEFT, expand=YES, fill=BOTH)
    scroll.pack(side=RIGHT, expand=NO, fill=Y)
    for l in range(101):
        txt.insert(END, 'Ceci est du texte. Juste du texte.\n')
    txt.insert(50.0, 'Ceci est une image  Pas mal non ?\n')
    txt.image_create(50.19, image=photo)
     
    fenetre.mainloop()
    On est bien dans une logique ligne/colonne, Et non ps caractère comme je l'ai dis plus haut et qui risque d’être trompeur.
    Vous remarquerez le 5.0: Les lignes commences à 1 et les colonnes à 0.

    @+
    Merci d'utiliser le forum pour les questions techniques.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2011
    Messages : 58
    Points : 39
    Points
    39
    Par défaut
    Je vous dis un Grand Merci PauseKawa pour vos explications précieuses et très claires et qui permettent à des débutants comme moi de persévérer.

    Je vous souhaite un très bon week-end PauseKawa!

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/04/2006, 13h33
  2. [JPanel]Mettre une image dans un JPanel
    Par ehmppowa dans le forum Composants
    Réponses: 11
    Dernier message: 30/11/2005, 20h17
  3. [css](debutant) mettre une image dans un bandeau
    Par tuxrouge dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 07/09/2005, 14h38
  4. Peut on mettre une image dans une BD MySQL ?
    Par maddog2032 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 25/07/2003, 16h18

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