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

Python Discussion :

Association d'un bouton et de plusieurs def()


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Billets dans le blog
    15
    Par défaut Association d'un bouton et de plusieurs def()
    Bonjour à tous,

    Je continue mon apprentissage de Python avec beaucoup de plaisir.

    Par contre je bute sur un petit aspect.
    Il est possible d'associer à un bouton une def() précédemment créée ainsi par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    from Tkinter import *
     
    def ma_def():
        #Je défini ma def()...
     
    fen = Tk()
    cadre = Canvas(fen, width = 200, height = 150, bg = 'light yellow')
    cadre.bind ('<Button-1>', ma_def)
    cadre.pack()
    Jusqu'à là pas de problème.
    Mon souci apparait si je veux associer une deuxième def(), par exemple ma_def2() à '<Button-1>'...

    Là je bloque. J'ai essayé pas mal de solution mais rien de satisfaisant.
    Du coup je suis obligé de tout mettre dans la même fonction, mais ceci me gêne.

    Quelqu'un aurait-il une solution autre que cette dernière?

    D'avance merci à tous et bonne programmation.
    Charles-Elie
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Pourquoi ne pas faire une fonction qui appellerait les 2 autres successivement?
    Je m'explique:
    Une fonction que tu passes à ton bouton, qui appelle les deux autres
    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
    from Tkinter import * #Note à part: évite ce genre d'import
    def f1():
        pass #Première action
     
    def f2():
        pass #Deuxième action
     
    def ma_def():
        f1() #Première action
        f2() #Deuxième action
     
    fen = Tk()
    cadre = Canvas(fen, width = 200, height = 150, bg = 'light yellow')
    cadre.bind ('<Button-1>', ma_def)
    cadre.pack()

  3. #3
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Billets dans le blog
    15
    Par défaut
    Impec. Je n'y avais pas pensé. Je n'ai pas encore tous les bons automatismes.
    from Tkinter import * #Note à part: évite ce genre d'import
    Pourquoi? Et quel import me conseilles-tu?
    Moi j'applique cette méthode car c'est celle donnée par G.SWINNEN dans sont tuto.
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Ce genre d'import peut être à la base de diverses erreurs, notamment si le module importé est os, parce qu'il définit une fonction open, qui viendra écraser la fonction open de base, de plus ça charge beaucoup d'objets dans le contexte, qui ne seront pas forcément tous utilisés, et tu perds en lisibilité vu qu'on ne sait pas de quel module vient la fonction.
    Tu as deux possibilités :
    Soit tu importes toutes les fonctions dont tu as besoin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from Tkinter import Tk #, ...
    Soit tu importes directement le module, éventuellement en le renommant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import Tkinter
    fen = Tkinter.Tk()
    #ou bien
    import Tkinter as Tk
    fen = Tk.Tk()
    cf http://python.developpez.com/faq/?pa...ites#GenImport

  5. #5
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Billets dans le blog
    15
    Par défaut
    Ok et merci pour ce conseil. J'essayerai de le mettre systématiquement en application puisque à priori il permet de se simplifier la vie.

    Encore merci
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

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

Discussions similaires

  1. Bouton identique sur plusieurs feuilles
    Par jeanmanu dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 08/07/2008, 22h11
  2. Association d'un DataTemplate (avec event) à plusieurs classes
    Par stephanie.gaillard dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 03/04/2008, 08h56
  3. Association d'un bouton à une webBrowser
    Par arkante1984 dans le forum C++
    Réponses: 16
    Dernier message: 18/09/2006, 11h20
  4. Réponses: 1
    Dernier message: 09/05/2006, 15h02
  5. Bouton radio sur plusieur ligne avec Border layout
    Par Bason_sensei dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 03/05/2006, 16h03

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