Recuperer une variable d'un evenement KeyPress (avec Tkinter) [Résolu]

Signaler
Messages postés
10
Date d'inscription
samedi 24 avril 2021
Statut
Membre
Dernière intervention
26 avril 2021
-
Messages postés
10
Date d'inscription
samedi 24 avril 2021
Statut
Membre
Dernière intervention
26 avril 2021
-
Bonjour, Je j'ai créé une fonction qui me renvoie x=1 et je souhaiterais l'activer lorsqu'on appuie sur entrée comme ceci:
___________________________________________
class Comencer(Texte):
def init(self,canvas):

self.canvas.bind_all('<KeyPress-Return>',self.debut_de_partie)

def debut_de_partie(self,evt):
self.cacher(canvas)
x=1
return x
______________________________________

Comment récupérer la variable x lorsqu'on appuie sur "entrée" ?
J'ai essayé ces méthodes qui n’ont pas fonctionnées:

1)x=self.canvas.bind_all('<KeyPress-Return>', self.debut_de_partie)
résultat : me donne une suite de chiffre incohérent au lieu de me donner 1, même lorsque j'appuie sur entrée.

2)self.canvas.bind_all('<KeyPress-Return>', x=self.debut_de_partie)
résultat, une erreur s'affiche : unexpected keyword argument "x"

Comment faire pour récupérer la variable x de la fonction début_de_partie en appuyant sur entrée?

4 réponses

Messages postés
20
Date d'inscription
vendredi 12 juin 2020
Statut
Membre
Dernière intervention
25 avril 2021
3
Bonjour,

bind() ne s'applique qu'au widget spécifique
bind_class() s'applique aux widgets de la classe
bind_all() s'applique sur toute l'application

Voir : https://tkinterexamples.com/events/events.html

Dans votre programme quelle variable est sensée récupérer la valeur du x ?
À moins que x soit la variable à modifier et qu'il faille la déclarer en global dans la fonction où elle est modifiée (debut_de_partie).
Dans cette fonction, l'argument à passer est event et non evt : debut_de_partie(self, event)
Messages postés
20
Date d'inscription
vendredi 12 juin 2020
Statut
Membre
Dernière intervention
25 avril 2021
3
Bonjour,

Pourquoi bind_all et non bind ?
Pourquoi <KeyPress-Return> et non <Return> ?

Présentez mieux votre code (https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code) car là c'est peu lisible.
Messages postés
10
Date d'inscription
samedi 24 avril 2021
Statut
Membre
Dernière intervention
26 avril 2021
1
ok je reposte mon code
class Comencer(Texte):
    def init(self,canvas):
        
        self.canvas.bind_all('<KeyPress-Return>',self.debut_de_partie)
    
    def debut_de_partie(self,evt):
        self.cacher(canvas)
        x=1
        return x


Bind_all et keypress-return c'est la fonction telle qu'elle est décrite dans mon livre de python. Je débute encore, est ce que vraiment y a une différence dans cette problématique?
J'aimerais juste récuperer le x de la 2ème fonction en appuyant sur entrée
Messages postés
10
Date d'inscription
samedi 24 avril 2021
Statut
Membre
Dernière intervention
26 avril 2021
1
merci, grâce a toi, j'ai réussit a faire fonctionner mon programme, j'ai changé l'argument evt par event et j'ai déclaré la variable x comme globale a l’intérieure de la fonction au lieu d'essayer de la récupérer depuis l’extérieur. Par contre si on met juste Bind() au lieu de Bind_all() rien ne se passe, Met bon j'ai réussit ce que je voulais faire.
class Comencer(Texte):
    def init(self,canvas):
        
        self.canvas.bind_all('<KeyPress-Return>',self.debut_de_partie)
    
    def debut_de_partie(self,event):
        self.cacher(canvas)
        global x
        x=1
        print(' x = ', x)