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 :

Clic ou pas clic : la commande est exécutée ! [Python 3.X]


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2020
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Clic ou pas clic : la commande est exécutée !
    Bonjour,
    J'ai créé le programme ci-dessous (épuré au maximum pour montrer mon problème).
    Mon souci est le suivant : que je clique ou non sur le bouton "Save" la fonction est exécutée.
    Quelqu'un peut-il m'expliquer l'erreur que je commets ?
    Merci pour votre aide.

    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
    # -*- coding: utf-8 -*-
    import tkinter
     
    def save():
        File_save = open("Sauvegarde.txt", "w")
        File_save.write("Essai")
        File_save.close()
     
    # Création de la fenêtre principale
    window_1 = tkinter.Tk()
    window_1.geometry("200x150+20+20")
     
    Bouton_save = tkinter.Button(window_1, text="Save", fg="black", font=("Helvetica", 12))
    Bouton_save.place(x=10, y=10)
    Bouton_save.bind('<Button-1>', save())
     
    window_1.mainloop()
    Fichiers attachés Fichiers attachés

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

    C'est parce que tu appelles la fonction à la connexion du bouton Bouton_save.bind('<Button-1>', save()).
    Enlève les parenthèses.

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par jpg-92 Voir le message
    Mon souci est le suivant : que je clique ou non sur le bouton "Save" la fonction est exécutée.
    Quelqu'un peut-il m'expliquer l'erreur que je commets ?
    Vous n'observez pas ce qu'il se passe: la fonction n'est exécutée qu'une seule fois au lancement du programme. Et si vous cliquez sur le bouton après, çà ne fait rien.

    D'où la suggestion de VinsS côté parenthèses.

    Et là Python dit que save est appelée avec un argument alors qu'elle n'en accepte aucun: toutes les fonctions appelées via un .bind reçoivent un Event en paramètre.

    Mais les widgets qui ont une action "évidente" comme les Button ont un paramètre command qui permet de passer la fonction à appeler (sans paramètre cette fois).

    Tkinter, c'est compliqué.
    Il vaut mieux avoir découvert ce qu'on peut faire avec dans un tuto. Si on prend le temps de faire exercices proposés, çà fait autant d'exemples pouvant servir de point de départ.... et il faut avoir la curiosité d'ouvrir une documentation pour voir le détails des widgets qu'on veut utiliser.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2020
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Merci !
    Merci pour vos attentions.
    Je souhaite évoquer ces trois points :
    1)En effet : le fait d'enlever les parenthèses crée un autre problème lors du clic sur le bouton,
    2)Il est vrai que le fait de passer la fonction save dans le paramètre command de la classe tkinter.Button résoud le problème. Mais c'est ce que je voudrais éviter pour d'autres raisons.
    3)Je suis d'accord qu'il y a avantage à suivre des tutos. J'en ai suivi plusieurs avec rigueur. Je n'ai pas encore trouvé l'objet idoine et je pensais utile de soumettre mon problème pour gagner du temps.
    Très très bonne soirée.

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par jpg-92 Voir le message
    Je n'ai pas encore trouvé l'objet idoine et je pensais utile de soumettre mon problème pour gagner du temps.
    Vu les erreurs, c'est d'abord des soucis de compréhension (çà ne marche pas comme çà) et de savoir faire côté mise au point de votre code (le relire en vous mettant à la place de Python pour comprendre les instructions que vous lui avez demandé d'exécuter).

    Difficile d'aller plus vite que la capacité d'absorption de son cerveau!
    Vous pouvez juste choisir des entrainements adaptés profitant de ce que vous savez déjà pour adresser ce que vous maîtrisez moins bien.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2020
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Dur, dur !
    Bonjour,
    Je vous remercie pour votre éclairage (...sur la limitation de mon cerveau).
    Du coup je vous prie de m'excuser de vous avoir embêté avec ce sujet.
    Je ne recommencerai pas.
    Au revoir.
    Jean-Paul Guillois

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par jpg-92 Voir le message
    Je vous remercie pour votre éclairage (...sur la limitation de mon cerveau).
    Votre cerveau n'est (sauf handicap) pas plus limité que le mien.

    Mais vous avez certainement constaté que vous aviez plus de facilités à aborder certains domaines que d'autres. Et vous avez aussi constaté que ce qui pouvait vous paraître facile était difficile à d'autres.

    Nous sommes malgré tout un peu tous différents.

    Et quand on se lance dans un apprentissage (ou dans n'importe quoi), il faut faire avec ses forces et ses faiblesses.

    Ce qui n'est pas très nouveau: "connais toi toi même" nous vient de Socrate.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

Discussions similaires

  1. ne pas activer la feuiller en exécutant une commande
    Par meryn dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/04/2012, 01h05
  2. Réponses: 1
    Dernier message: 20/04/2011, 08h29
  3. Un clic et c'est déjà pas mal
    Par BiM dans le forum Écologie
    Réponses: 152
    Dernier message: 27/11/2008, 11h07
  4. Réponses: 3
    Dernier message: 13/09/2007, 14h36
  5. Netstat n'est pas reconnu comme commande interne !
    Par youcef81 dans le forum Administration
    Réponses: 1
    Dernier message: 06/09/2006, 12h15

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