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 :

[tkinter] Comment faire en sorte qu'une image dans un canvas soit cliquable ?


Sujet :

Tkinter Python

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 18
    Points : 15
    Points
    15
    Par défaut [tkinter] Comment faire en sorte qu'une image dans un canvas soit cliquable ?
    Voilà

    J'aimerai mettre une image d'un bouton à cliquer dans un canvas, mais je ne sais pas comment faire pour rendre ce canvas cliquable et que cela lance une action.

    Merci

  2. #2
    Membre du Club
    Homme Profil pro
    Consultant en propriété intellectuelle
    Inscrit en
    Janvier 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Consultant en propriété intellectuelle
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2008
    Messages : 88
    Points : 64
    Points
    64
    Par défaut
    Tu veux dire mettre un bouton en dehors du canvas?

    C'est a dire dans la fenetre, quand tu clique sur le bouton ca t'envoi l'action dans la fenetre?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    non une image dans un create_image

    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
    19
    20
    from Tkinter import *
     
     
    root = Tk()
    c = Canvas(root,)
    c.pack()
     
     
    # image 
    fond = PhotoImage(file="C:\Python24\projet lecture media\interface_1.gif")
    bouton = PhotoImage (file="C:\Python24\projet lecture media\choisir.gif") 
     
    #image de fond  
    c.create_image(0, 0, image=fond)
     
    # bouton cliquable (50, 50)
    c.create_image(50, 50, image=bouton)
     
     
    root.mainloop()

  4. #4
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 181
    Points : 199
    Points
    199
    Par défaut
    Salut,

    Les tags me semblent tout à fait désginés pour ce genre de tâches :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
     
    from Tkinter import *
     
    def f_choisir(event):
    	print "callback choisir"
     
    root = Tk()
    c = Canvas(root,)
    c.pack()
     
    # image 
    fond = PhotoImage(file="img_fond.gif")
    bouton = PhotoImage (file="img_choisir.gif") 
     
    #image de fond  
    # anchor=NW -> positionne dans le coin supérieur gauche (nord-ouest)
    c.create_image(0, 0, image=fond, anchor=NW)
     
    # bouton cliquable (50, 50)
    c.create_image(50, 50, image=bouton, tag="choisir")
    # tag_bind(<nom du tag>, <nom event>, <fonction callback>)
    c.tag_bind("choisir", "<Button-1>", f_choisir)
     
    root.mainloop()
    Note : il est possible d'affecter le même tag à plusieurs items du canevas.
    <3 Debian
    [ C | C++ | PHP | Python ]

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    Merci ça marche très bien

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut petite question
    Bonjour a tous, je sais que ce topic est résolu depuis bien longtemps déja, mais j'ai un peu le même probleme et je n'arrive pas a comprendre quelque truc...
    tout d'abord, a quoi sert la fonction tag , je n'arrive pas a comprendre.. et qu'est ce qu'io faut remplacer par "choisir" et "Bouton1" ...?
    Merci

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Une autre petite question,
    Qu'est ce qu'il faut mettre a la place de event en définissant la fonction si on définit une autre fonction avec un autre bouton? et par quoi il faut remplacer le "<button-1>", je l'ai remplacer par <button-2> mais ca ne fonctionne pas , ça ne me renvoi pas a ma deuxième fonction...

    Mon programme :

    boutons image.py

    from tkinter import *

    def power(event):
    quit()
    def bleu():
    print("a")


    root = Tk()
    c = Canvas(root,)
    c.pack()


    # image
    '''fond = PhotoImage(file="a faire")'''
    bouton1 = PhotoImage (file="power.gif")
    bouton2 = PhotoImage (file="bleu")

    #image de fond

    '''c.create_image(0, 0, image=fond, anchor=NW)'''

    # bouton cliquable (50, 50)
    c.create_image(100, 150, image=bouton1, tag="c1")
    c.create_image(300,150,image=bouton2, tag="c2")
    # tag_bind(<nom du tag>, <nom event>, <fonction callback>)
    c.tag_bind("c1", "<Button-1>", power)
    c.tag_bind("c2","<Button-2>", bleu)
    root.mainloop()

  8. #8
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    L'auteur de la réponse a indiqué en commentaire l'usage de tag_bind
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    c.create_image(50, 50, image=bouton, tag="choisir")
    # tag_bind(<nom du tag>, <nom event>, <fonction callback>)
    c.tag_bind("choisir", "<Button-1>", f_choisir)
    Donc "choisir" est le nom du tag que l'on veut lier.
    "<Button-1>" définit le bouton gauche de la souris.
    et "f_choisir" est la fonction qui sera appelée.

    Ce qui veut dire que tu peux choisir de nommer ton tag et ta fonction autrement.

    Est-ce cela ta question ?

    Edit: Je répondais à ton premier message, en fait. Les "<Button-X>" sont ceux de la souris, autre numéro == autre bouton.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 26/05/2010, 22h17
  2. Comment faire un affichage d'une image d'origine
    Par Epliknot dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 04/05/2009, 08h26
  3. Réponses: 5
    Dernier message: 16/10/2008, 13h36
  4. Réponses: 3
    Dernier message: 02/08/2007, 17h06
  5. Comment faire un rollover sur une image
    Par mackean dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 29/03/2007, 16h15

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