Bouton python [Résolu]

Signaler
Messages postés
5
Date d'inscription
dimanche 18 octobre 2020
Statut
Membre
Dernière intervention
20 octobre 2020
-
Messages postés
5
Date d'inscription
dimanche 18 octobre 2020
Statut
Membre
Dernière intervention
20 octobre 2020
-
Bonjour,

Quand je crée un bouton dans une class l'argument "command" se déclenche a la création du bouton et pas a l'appui du bouton
Quelqu'un sait pourquoi?
Merci d'avance

3 réponses

Messages postés
12763
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 octobre 2020
712
bonjour, ce sera plus simple de t'expliquer si tu montres ton code.
tiens compte de ceci: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Messages postés
5
Date d'inscription
dimanche 18 octobre 2020
Statut
Membre
Dernière intervention
20 octobre 2020

Voici mon code (un extrait)
C'est un générateur d'exercices de math que je code pour ma mère et là c'est le début de la partie interface

class Interface_globale(Générateur_exercices_global):
    """Interface globale pour chaque catégorie"""
    
    def __init__(self):
        Générateur_exercices_global.__init__(self)
    
    
    def interface_initiale(self):
        for y in root.winfo_children():
            y.destroy()
        root.pack_propagate(0)
        self.titre=tk.Label(root,text="Exercices à part",bg="blue",font=("arial",30,"bold italic")).pack(padx=60,pady=40)
        self.bouton_comparaison=tk.Button(root,text="Comparaison",width=40,height=2,command=Interface_ciblée_exos_globaux.interface_comparaison(self)).pack()
    
    
class Interface_ciblée_exos_globaux(Interface_globale):
    """ Interface pour les exos à part """
    
    
     
    def __init__(self):
        Interface_globale.__init__(self)
        
    def interface_comparaison(self):
        print("test")
Messages postés
12763
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 octobre 2020
712 >
Messages postés
12763
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 octobre 2020

je suppose que le soucis est ici:
command=Interface_ciblée_exos_globaux.interface_comparaison(self)
, qui provoque l'appel de
Interface_ciblée_exos_globaux.interface_comparaison
.
Messages postés
5
Date d'inscription
dimanche 18 octobre 2020
Statut
Membre
Dernière intervention
20 octobre 2020
>
Messages postés
12763
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 octobre 2020

J'ai mis que cet extrait car le reste du code n'a aucun rapport avec ca.
Et le fait que la
command=Interface_ciblée_exos_globaux.interface_comparaison(self)
appel
Interface_ciblée_exos_globaux.interface_comparaison
est justement mon problème.
command=Interface_ciblée_exos_globaux.interface_comparaison(self)
est un argument, option du bouton qui est sensé se déclencher à l'appui du bouton, sauf qu'il se déclenche directement
Messages postés
12763
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 octobre 2020
712 >
Messages postés
5
Date d'inscription
dimanche 18 octobre 2020
Statut
Membre
Dernière intervention
20 octobre 2020

as-tu essayé
command=Interface_ciblée_exos_globaux.interface_comparaison
?
Messages postés
12763
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 octobre 2020
712 >
Messages postés
12763
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 octobre 2020

ou bien:
from functools import partial
# ...
cb=partial(Interface_ciblée_exos_globaux.interface_comparaison,self)
self.bouton_comparaison=tk.Button(root,text="Comparaison",width=40,height=2,
                                command=cb).pack()
Messages postés
5
Date d'inscription
dimanche 18 octobre 2020
Statut
Membre
Dernière intervention
20 octobre 2020
>
Messages postés
12763
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 octobre 2020

Ça a marché en enlevant les parenthèses et en mettant un objet "Interface_ciblee_exos_globaux"
Merci
Messages postés
5
Date d'inscription
dimanche 18 octobre 2020
Statut
Membre
Dernière intervention
20 octobre 2020

la fin du code est pour test
et quand je lance et que j'appelle la première class le code appelle la methode test au moment ou il défini le boutons_comparaison