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 :

comment ajouter des icones dans un menu


Sujet :

Tkinter Python

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2012
    Messages : 50
    Points : 45
    Points
    45
    Par défaut comment ajouter des icones dans un menu
    bonsoir tout le monde
    je voudrai savoir comment insérer des icones dans la barre de menu?
    et merci d'avance
    Images attachées Images attachées  

  2. #2
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    Simplement en utilisant l'option image d'un Menubuton ou d'un article de Menu ajouter avec add_*, avec comme valeur une instance valable d'une image qui dépend du format que tu veut utiliser, en passant soit par le détours PIL ou une instance de PhotoImage.
    A savoir que normalement en précisant l'option image a un Menubutton ou a un article de Menu l'image remplace le texte mais on peut faire les deux: image et texte.
    A savoir que il vaut mieux passer par le module PIL (Python Imaging Library) qui sert a manipuler des images pouvant s'interfacer avec Tkinter par sa classe ImageTk.
    NB: il faut conserver l'instance de ton image dans un conteneur: liste, tuple ou dict afin de pas perdre la référence de celle-ci: problème souvent soulever par les débutants Tkinter.
    Voici un code exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import Tkinter as tk
    from PIL import Image,ImageTk
     
     
    tk_instance=tk.Tk() #Création d'un instance de l'objet Tk()
    img=Image.open('/home/nom/Images/image.ext') #Ouverture du fichier image
    img_tk=[ImageTk.PhotoImage(img)] #Création de l'instance de l'image dans une liste
     
    menu_articlebut=tk.Menubutton(tk_instance,image=img_tk[0],text='Menu button',compound='left') #Création d'un Menubutton avec une image et du texte. le compound='left' permet de situer ton image a gauche du texte
    menu_article=tk.Menu(menu_articlebut) #création du Menu
    menu_article.add_command(image=img_tk[0],label='image in command',compound='left') #Addition d'un article de Menu de type command avec image et texte
    menu_articlebut.config(menu=menu_article) #Association du Menubutton au Menu
    menu_articlebut.pack()
    tk_instance.mainloop() #lancement de la boucle qui attend les interactions de l'utilisateur de la GUI.

  3. #3
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2012
    Messages : 50
    Points : 45
    Points
    45
    Par défaut
    Salut
    le trucs c'est que j'utilise python3.2 et dans cette version ya pa PIL
    alors que dois je faire??

  4. #4
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    Essaye de implémenter une instance valide avec la classe tkinter.PhotoImage mais cette classe ne supporte que les formats: GIF, PPM/PGM mais tu peut transcoder en format *.gif.
    Soit par internet en ligne:
    -online-images-converter.html
    Mais l'image gif de sortie n'est pas garantie d'être pris en charge après transcodage (voir après).
    -sinon par le biais d'un programme comme GIMP (GNU Image Manipulation Programme).
    Si le traceback te dit quelque chose comme:
    image"pyimage1" doesn't exist
    C'est que l'image n'est pas pris en charge malgré le bon format, ca arrive.
    Le code avec PhotoImage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # -*- coding: utf-8 -*-
     
    import Tkinter as tk
     
    tk_instance=tk.Tk() #Création d'un instance de l'objet Tk()
     
    img_tk=[tk.PhotoImage(file='/Chemin/vers/image.gif')] #Création de l'instance PhotoImage avec l'image comme valeur d'argument file=, dans une liste
     
    menu_articlebut=tk.Menubutton(tk_instance,image=img_tk[0],text='Menu button',compound='left') #Création d'un Menubutton avec une image et du texte. le compound='left' permet de situer ton image a gauche du texte
    menu_article=tk.Menu(menu_articlebut) #création du Menu
    menu_article.add_command(image=img_tk[0],label='image in command',compound='left') #Addition d'un article de Menu de type command avec image et texte
    menu_articlebut.config(menu=menu_article) #Association du Menubutton au Menu
    menu_articlebut.pack()
    tk_instance.mainloop() #

  5. #5
    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,

    Juste une précision pour éviter les confusions sur les erreurs tkinter.

    Citation Envoyé par Luke spywoker Voir le message
    image"pyimage1" doesn't exist
    C'est que l'image n'est pas pris en charge malgré le bon format, ca arrive.
    Le code avec PhotoImage:
    Pas trop (du tout même): Ceci est débattu ici (Voir la réponse de wiztricks).
    C'est une erreur qui arrive non pas lors de la création de l'instance mais lors de son utilisation. Vous comprendrez dans le lien.

    Pour ce qui est des formats non reconnus c'est
    _tkinter.TclError: couldn't recognize data in image file "nomdufichierimage"
    Cette erreur arrive lors de la lecture du fichier image, img = tkinter.PhotoImage(...) ou img = tkinter.BitmapImage(...).

    Les autres erreurs 'classiques' sont:
    Too early to create image

    et le normal
    _tkinter.TclError: couldn't open "nomdufichierimage": no such file or directory
    @+

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

Discussions similaires

  1. Comment ajouter des bitmaps dans un menu
    Par ksoft dans le forum Visual C++
    Réponses: 3
    Dernier message: 13/05/2009, 20h36
  2. [FAQ] Comment ajouter un séparateur dans un menu?
    Par THE_VIP dans le forum Contribuez
    Réponses: 1
    Dernier message: 29/08/2006, 21h13
  3. Ajouter des icones dans vos ressources
    Par Eric Boisvert dans le forum EDI
    Réponses: 1
    Dernier message: 24/05/2005, 20h02

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