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 :

Python3 tkinter méthode configure d'un bouton


Sujet :

Tkinter Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2014
    Messages : 4
    Par défaut Python3 tkinter méthode configure d'un bouton
    Bonjour,

    Je suis en terminale s en spécialité informatique. Je suis en train de programmer un jeu de black jack avec son interface graphique pour mon projet de fin d'année. Cependant, j'ai du mal avec l'interface graphique. Je voudrais changer la commande associer avec un bouton de ma fenêtre. J'utilise la méthode configure, mais je rencontre un problème. Lorsque le programme s’exécute, il change la commande du bouton mais il lance aussi la fonction associer au bouton sans avoir à cliquer dessus. Je voudrais savoir si c'est bien la bonne méthode.

    Merci d'avance!

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par SuperCalif Voir le message
    Bonjour,

    Je suis en terminale s en spécialité informatique. Je suis en train de programmer un jeu de black jack avec son interface graphique pour mon projet de fin d'année. Cependant, j'ai du mal avec l'interface graphique. Je voudrais changer la commande associer avec un bouton de ma fenêtre. J'utilise la méthode configure, mais je rencontre un problème. Lorsque le programme s’exécute, il change la commande du bouton mais il lance aussi la fonction associer au bouton sans avoir à cliquer dessus. Je voudrais savoir si c'est bien la bonne méthode.

    Merci d'avance!
    Bonjour,

    Pourriez-vous publier la portion de code qui pose problème, svp ?

    Vous avez un bouton "#" dans l'éditeur de messages du forum pour insérer du code source.

    @+.

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 699
    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 699
    Par défaut
    Citation Envoyé par SuperCalif Voir le message
    J'utilise la méthode configure, mais je rencontre un problème. Lorsque le programme s’exécute, il change la commande du bouton mais il lance aussi la fonction associer au bouton sans avoir à cliquer dessus. Je voudrais savoir si c'est bien la bonne méthode.
    C'est la bonne méthode, mais "lance aussi la fonction sans avoir à cliquer dessus" dit qu'elle n'est pas bien appliquée.
    Ou plutôt que fonction et retour de la fonction ne s'écrivent pas pareil:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    button['command'] = fonction
    button['command'] = fonction() # retour de...
    Un ordi. est bête: il n'imagine pas ce que vous vouliez, il se contente d'exécuter.

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

  4. #4
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2014
    Messages : 4
    Par défaut
    Merci d'avoir répondu si rapidement.

    Le code intégrale est assez difficile à lire car je suis en train de passer à l'interface graphique. Voici la partie qui pose problème:
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    def Pioche():
    # Une carte est un dictionnaire
    # La clé point donne le nombre de point d'une carte
    # La clé CheminImage donne le chemin pour accéder aux images à afficher dans le canvas Tapis à chaque fois que l'on appelle la fonction
    # La variable x sert à déplacer chaque image pour superposer les images de cartes
     
    # Le paquet et la main sont des listes contenant les cartes
    	global paquet,main
    	global i,x
    	global ListeImage
    	global PointPerso
    	main.append(paquet[0])
    	paquet.remove(paquet[0])
    	PointPerso = PointPerso + main[-1]["point"]
     
    	# interface graphique
    	ListeImage[i] = PhotoImage(file = main[-1]["CheminImage"])
    	Tapis.create_image(x,0, anchor ='nw', image=ListeImage[i])
    	Tapis.grid(row =1)
     
    	i =i+1
    	x =x+30
     
    	TextePoints.config(text ="Vous avez " + str(PointPerso) + " points")
     
    def distribuer(paquet):
    	"Une fonction qui distribue le jeu"
     
    	# On définit la main du joueur et du croupier selon une liste
    	global main,croupier
    	main=[]
    	croupier=[]
    	# On distribue les cartes en modifiant les listes paquets, main et croupier
    	# 1ère carte
    	Pioche()
     
    	# 2ème carte
            # La pioche du croupier fonctionne sur le même principe que celle du joueur sauf que les variables ne sont pas globales mais passées en arguments et renvoyées
    	paquet,croupier = PiocheCroupier(paquet,croupier)
     
    	# 3ème carte
    	Pioche()
     
     
    # Interface graphique
    # On va modifier les boutons cartes et voir pour les rendre cliquables
    # On effectue d'abord un test pour vérifier si le joueur peut piocher
    	if PointPerso < 21 or (main.__len__() == 2 and PointPerso == 22):
     
     
    # L'erreur est ici, la fonction Pioche se déclenche toute seule
    		ButCarte.configure(relief ='raised', command =Pioche())
    	ButVoir.config(relief ='raised',command =Inactif)
     
     
    	return paquet,main,croupier,PointPerso,PointCroupier
     
    #initialisation de l'interface graphique
     
    fen.mainloop()
    # il y a d'autres fonctions avant (dont une qui ferme la mainloop)
     
    paquet,main,croupier,PointPerso,PointCroupier = distribuer(paquet)

  5. #5
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2014
    Messages : 4
    Par défaut
    Merci beaucoup wiztricks, en fait j'avais mis des parenthèse pour pouvoir passer en paramètre des valeurs. Je les avaient changé pour les rendre globales mais je ne savais pas qu'il fallait forcément retirer les parenthèses.
    D'ailleurs, par curiosité, comment fait-on pour passer en paramètres des valeurs dans un bouton?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par SuperCalif Voir le message
    Merci beaucoup wiztricks, en fait j'avais mis des parenthèse pour pouvoir passer en paramètre des valeurs. Je les avaient changé pour les rendre globales mais je ne savais pas qu'il fallait forcément retirer les parenthèses.
    D'ailleurs, par curiosité, comment fait-on pour passer en paramètres des valeurs dans un bouton?
    Quand vous mettez des parenthèses à un nom_de_fonction(), vous demandez à l'ordinateur d'appeler nom_de_fonction() puis d'utiliser la valeur de retour de cette fonction.

    Quand vous ne mettez pas des parenthèses à nom_de_fonction, vous faites référence à la fonction elle-même e.g. à son adresse mémoire, sans l'appeler.

    Si vous voulez passer des valeurs en paramètres, il vous faudra recourir à une fonction lambda.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Button(fenetre, text="Piocher", command=lambda:Piocher(3))
    @+.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2014
    Messages : 4
    Par défaut
    Okay, merci de l'information!

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

Discussions similaires

  1. [1.x] Passer une variable dans la méthode configure du formulaire
    Par Niki59 dans le forum Symfony
    Réponses: 2
    Dernier message: 29/04/2011, 16h35
  2. Créer méthode configuration port de série
    Par trifly dans le forum Général Java
    Réponses: 4
    Dernier message: 07/04/2009, 11h25
  3. Configuration d'un bouton de raccourci
    Par zandru dans le forum Ordinateurs
    Réponses: 7
    Dernier message: 26/02/2009, 09h38
  4. Utilisation d'une méthode Java sur un bouton HTML
    Par Corlo dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 29/10/2007, 14h53
  5. [Tkinter] Méthode get() dans une boucle while
    Par Thundie dans le forum Tkinter
    Réponses: 2
    Dernier message: 04/02/2006, 00h06

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