Débutant en python... problème avec les fonctions

[Résolu]
Signaler
Messages postés
38
Date d'inscription
vendredi 27 avril 2001
Statut
Membre
Dernière intervention
18 mars 2008
-
Messages postés
38
Date d'inscription
vendredi 27 avril 2001
Statut
Membre
Dernière intervention
18 mars 2008
-
Bonjour,
Je suis sur python depuis quelques heures... en plus les languages orientés objets sont un peu nouveau pour moi... J'essaie désesperement de faire une petite appli hello world. Je ne comprend pas pourquoi les définitions sont executés tout de suite. Voici le code :

# -*- coding: utf-8 -*-
from Tkinter import *

# définition des fonctions évenementielles
def but1():
    "Affiche Hello World"
    texte1.configure(text = 'Hello World')
# programme
fenetre = Tk()
texte1 = Label(fenetre, text='Bonjour !',fg='green')
texte1.pack()
boutton1 = Button(fenetre, text='Click',fg='blue', command = but1())
boutton1.pack()
boutton2 = Button(fenetre, text='quitter', fg='purple', command = fenetre.destroy)
boutton2.pack()
fenetre.mainloop()

je voudrais qu'avant de cliquer sur le boutton1 le texte1 affiche "Bonjour !" (ce qui n'est pas le cas). Et qu'il m'affiche Hello World une fois que je clique sur le boutton1. Merci beaucoup parceque là je n'y comprend rien... surement un truc conceptuel qui m'échape .

2 réponses

Messages postés
35
Date d'inscription
lundi 28 juillet 2003
Statut
Membre
Dernière intervention
29 octobre 2007

Il faut, pour éviter ça, enlever les parenthèses de but1() dans la ligne :

boutton1 = Button(fenetre, text='Click',fg='blue', command = but1() )

==>

boutton1 = Button(fenetre, text='Click',fg='blue', command = but1)

De cette manière là il ne l'appellera pas à l'initialisation... ou quelque chose dans le genre mais en tout cas c'est ça qu'il faut faire
Messages postés
38
Date d'inscription
vendredi 27 avril 2001
Statut
Membre
Dernière intervention
18 mars 2008

Et bien mille merci... Ca fonctionne impecablement.