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 gérer des cliques python 3


Sujet :

Tkinter Python

  1. #1
    Membre du Club Avatar de Petugnia
    Profil pro
    Inscrit en
    Février 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 81
    Points : 63
    Points
    63
    Par défaut Comment gérer des cliques python 3
    Bonjour,
    je débute en python 3
    J'aimerai savoir comment gérer plusieurs cliques avec tk avec bind?

  2. #2
    Membre du Club Avatar de Petugnia
    Profil pro
    Inscrit en
    Février 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 81
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par Petugnia Voir le message
    Bonjour,
    je débute en python 3
    J'aimerai savoir comment gérer plusieurs cliques avec tk avec bind?
    code
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    from tkinter import*
    import os
    # creation d'une fenetre
    fenetre=Tk()
    fenetre.title('Inventaire et plan reseau')
    fenetre.configure(bg='lightblue')
    #Créer une étiquette
    bienvenu=Label(fenetre)
    bienvenu.configure(text='Bienvenu !!!',bg='lightblue')
    bienvenu.pack()
    #Créer les variables
    inventaire='Inventaire matériel Epcl-au 30 avril 2009.xls'
    vj='Bâtiment VJ.vsd'
    rm='Bâtiment RM.vsd'
    gp='Bâtiment GP.vsd'
    hp='help.py'
    class InventaireEPCL:
        #créer l'étiquette
        excel=Label(fenetre)
        excel.configure(text=inventaire,bg='lightblue')
        excel.pack()
        #créer une frame
        cadre = Frame(fenetre, width =10, height =10, bg="lightyellow")
        cadre.bind("<Button-1>", cliquer)
        cadre.pack()
     
        #créer le lien
        def cliquer():
            os.startfile(inventaire)
     
     
    class planVJ:
        #créer l'étiquette
        visio=Label(fenetre)
        visio.configure(text=vj,bg='lightblue')
        visio.pack()
        #créer une frame
        cadre = Frame(fenetre, width =10, height =10, bg="lightyellow")
        cadre.bind("<Button-1>", cliquer)
        cadre.pack()
     
        #créer le lien
        def cliquer():
            os.startfile(vj)
     
    class planRM:
        #créer l'étiquette
        visioa=Label(fenetre)
        visioa.configure(text=rm,bg='lightblue')
        visioa.pack()
        #créer une frame
        cadre = Frame(fenetre, width =10, height =10, bg="lightyellow")
        cadre.bind("<Button-1>", cliquer)
        cadre.pack()
     
        #créer le lien
        def cliquer():
            os.startfile(rm)
     
    class planGP:
        #créer l'étiquette
        visiob=Label(fenetre)
        visiob.configure(text=gp,bg='lightblue')
        visiob.pack()
        #créer une frame
        cadre = Frame(fenetre, width =10, height =10, bg="lightyellow")
        cadre.bind("<Button-1>", cliquer)
        cadre.pack()
     
        #créer le lien
        def cliquer():
            os.startfile(gp)
     
    class aiderEPCL:    
        aider=Label(fenetre)
        aider.configure(text='Aide ?!',bg='lightblue')
        aider.pack()
        #créer une frame
        cadre = Frame(fenetre, width =10, height =10, bg="lightyellow")
        cadre.bind("<Button-1>", cliquer)
        cadre.pack()
     
        #créer le lien
        def cliquer():
            os.startfile(hp)
     
    #attente des evenements
    fenetre.mainloop()

  3. #3
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Points : 366
    Points
    366
    Par défaut
    Salut,

    Que veux-tu dire par "plusieurs clics" ?

    Si tu veux faire une action différente suivant là où tu cliques, tu as 2 possibilités :
    • soit tu fais plusieurs frames, avec un bind pour chaque frame ;
    • soit tu ne fais qu'un seul bind, et alors il faut récupérer les coordonnées du clic, et en fonction de la position choisir une action à exécuter.


    -

  4. #4
    Membre du Club Avatar de Petugnia
    Profil pro
    Inscrit en
    Février 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 81
    Points : 63
    Points
    63
    Par défaut
    J'ai fait plusieurs frame mais la fonction ne marche pas car je ne l'ai pas défini ou le clique ne fonction plus.
    Comment faire?

  5. #5
    Membre du Club Avatar de Petugnia
    Profil pro
    Inscrit en
    Février 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 81
    Points : 63
    Points
    63
    Par défaut erreur de définition ?
    Traceback (most recent call last):
    File "F:\Professionnel\projetepcl\base.py", line 32, in <module>
    class planVJ:
    File "F:\Professionnel\projetepcl\base.py", line 39, in planVJ
    cadrevj.bind("<Button-1>", cliquervj)
    NameError: name 'cliquervj' is not defined

  6. #6
    Membre du Club Avatar de Petugnia
    Profil pro
    Inscrit en
    Février 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 81
    Points : 63
    Points
    63
    Par défaut
    Trouver la solution, mettre la funtionc en premier et mettre un argument.

    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class InventaireEPCL:
        #créer le lien
        def cliquer(cadre):
            os.startfile(inventaire)
     
        #créer l'étiquette
        excel=Label(fenetre)
        excel.configure(text=inventaire,bg='lightblue')
        excel.pack()
        #créer une frame
        cadre = Frame(fenetre, width =10, height =10, bg="lightyellow")
        cadre.bind("<Button-1>", cliquer)
        cadre.pack()

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

Discussions similaires

  1. Comment gérer des sous ensembles avec des "enum" ?
    Par ogattaz dans le forum Langage
    Réponses: 2
    Dernier message: 30/05/2007, 10h29
  2. Réponses: 2
    Dernier message: 10/10/2006, 12h38
  3. [5.5.17] Comment gérer des autorisations
    Par elitost dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 12/09/2006, 20h20
  4. Comment gérer des services par programmation avec Delphi ?
    Par isachat666 dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 18/12/2005, 18h54
  5. [Firebird] Comment gérer des groupes d'utilisateur
    Par stundman dans le forum Administration
    Réponses: 3
    Dernier message: 16/11/2005, 13h30

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