[Python] Problem "add_command"

Résolu/Fermé
Utilisateur anonyme - 10 avril 2006 à 11:56
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 - 10 avril 2006 à 17:07
Bonjour
Voici la ligne qu me pose problème :
"inputmenu.add_command(label = "LIN", command = Print_Lin)"
J'ai créé une petite interface et lorsque je clique sur l'onglet "Lin", la fonction Print_Lin est appelée. Jusque-là, pas de problème.
Maintenant, je voudrais passer des paramètres à ma fonction Print_Lin, comme par exemple :
"inputmenu.add_command(label = "LIN", command = Print_Lin(matrice_lin))"
Et dans ce cas-là, ma fonction Print_Lin est appelée sans que je n'ai cliqué sur l'onglet "LIN". Et si je clique dessus, la fonction ne répond plus...
Quelqu'un aurait une idée?
Merci beaucoup

7 réponses

sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
10 avril 2006 à 12:47
Dans un fichier ?
Dans l'interface graphique ?
0
Utilisateur anonyme
10 avril 2006 à 14:06
Dans le terminal de commande, ma fonction Print_Lin affiche qqch qu'elle ne devrait afficher que lorsqu'on clique sur l'onglet qui l'appelle.
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
10 avril 2006 à 15:50
Voilà comment tu devrais faire:

Ne lance pas Print_lin directement.


Créé une fonction qui réagiera au clic, et c'est cette fonction qui lancera Print_Lin() en lui passant les bons paramètres.
0
Utilisateur anonyme
10 avril 2006 à 15:53
Ok merci mais j'ai trouvé
En fait, il suffit de déclarer en global les paramètres que je voulais passer à ma fonction.
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
10 avril 2006 à 15:57
mmm... mauvaise idée les paramètres globaux, c'est dangereux.

Mais bon, tu es libre.
0
Utilisateur anonyme
10 avril 2006 à 16:17
ah
c'est con parce que ça marche.....
Alors, comment je peux faire pour exécuter une fonction quand je clique sur un des onglets de mon interface?
Merci
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
10 avril 2006 à 16:26
Alors, comment je peux faire pour exécuter une fonction quand je clique sur un des onglets de mon interface?

Ben comme je t'ai dit:

command=bt_click()

puis la fonction bt_click() appelle Print_Lin() avec les bons paramètres.

Quant aux paramètres de Print_Lin(), vu que tu as une interface graphique, ils doivent aussi venir de l'interface graphique, non ?
(Nom de fichier ou autre).

Donc ta fonction bt_click() doit pouvoir aller lire les paramètres dans les éléments de l'interface graphique (zone de texte, case à cocher, etc.)
0
Utilisateur anonyme
10 avril 2006 à 16:34
Ben en fait, non
Tous mes paramètres ne viennent pas de l'interface graphique, c'est ça le problème.
En fait, mon programme récupère les données d'un fichier et les traite.
J'ai des paramètres d'entrée (par exemple x1, x2, x3, ...)et des param de sortie (y1, y2, y3, ...).
Je voudrais juste créer une interface qui puisse me permettre de choisir de tracer des courbes, comme x1 = f(y1), x1 = f(y3), ....
C'est pour ça que j'avais déclarer les variables en global puisqu'elles ne proviennent pas du tout de mon interface graphique.
Sinon, y'a beaucoup de risuqe à utiliser les variables globales?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
10 avril 2006 à 16:38
Je voudrais juste créer une interface qui puisse me permettre de choisir de tracer des courbes

Dans ce cas, ce n'est pas dans l'interface graphique que tu dois lancer le traitement.

L'interface doit juste servir à récupérer les paramètres dont tu as besoin.


Exemple: Programme principal:

afficher fenêtre paramètres()
récupérer paramètres renvoyés par la fenêtre
lancer le traitement
afficher le graphe.
0
Utilisateur anonyme
10 avril 2006 à 16:43
OK je vois
Ben je vais essayer de changer ce que j'ai fait....
Désolé mais t'as pas répondu à ma dernière question....
Y'a beaucoup de risuqe à utiliser les variables globales?
Merci
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
10 avril 2006 à 16:50
Y'a beaucoup de risuqe à utiliser les variables globales?

C'est une source de bugs importante.
Le risque est grand d'utiliser un nom de variable déjà déclaré en global sans s'en rendre compte, par exemple.

En programmation, on considère que l'utilisation des globale est nuisible, tout comme les GOTO.

Quand on éprouve le besoin d'utiliser des globales ou des GOTO, on est sûr à 99% qu'en réalité ce n'est pas nécessaire et que c'est un problème d'organisation du code.
0
Utilisateur anonyme
10 avril 2006 à 16:56
OK
Je te remercie
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
10 avril 2006 à 17:07
De rien.
0