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 :

Canvas.bind('<Up>' , ..) ne fonctionne pas


Sujet :

Tkinter Python

  1. #1
    Membre expérimenté
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    870
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 870
    Points : 1 522
    Points
    1 522
    Billets dans le blog
    4
    Par défaut Canvas.bind('<Up>' , ..) ne fonctionne pas
    Bonjour,
    Je constate qu'associer l'évènement '<Up>' à un canvas ne fonctionne pas(avec les autres widgets aucun souci). Je n'en comprends pas la raison. S'agit-il d'un bug?
    Qu'en est-t-il?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    from tkinter import *
     
    def do(event): 
        print ('ok')
     
    root = Tk()              
    widget = Canvas(root, width=400, height=400, bg='pink')                  
    widget.grid()
    widget.bind('<Up>', do)                                     
     
    root.mainloop()

    Par contre, par exemple si je lie l'évènement '<1>' au canvas, le code se comporte comme attendu...
    #Rien de nouveau sous le soleil, tout est vanité comme courir après le vent!
    Developpement pour Android avec Python3/Kivy/Buildozer

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Contrairement aux évènement "souris", ceux du clavier ne sont récupérés que par le widget qui a le "focus".

    Citation Envoyé par Hominidé
    Je n'en comprends pas la raison. S'agit-il d'un bug?
    Ce sont les attentes que vous avez de ce qu'il devrait se passer qui sont à revoir.

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

  3. #3
    Membre expérimenté
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    870
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 870
    Points : 1 522
    Points
    1 522
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par wiztricks Voir le message

    Contrairement aux évènement "souris", ceux du clavier ne sont récupérés que par le widget qui a le "focus".
    Merci, cependant avant de poster ma question, j'ai bien pensé à cette possibilité:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    from tkinter import *
     
    def do(event): 
        print ('ok')
     
    root = Tk()              
    widget = Canvas(root, width=400, height=400, bg='pink')                  
    widget.grid()
    widget.focus()
    widget.bind('<Up>', do)                                     
     
    root.mainloop()
    Mais, cela n'a rien changé.
    #Rien de nouveau sous le soleil, tout est vanité comme courir après le vent!
    Developpement pour Android avec Python3/Kivy/Buildozer

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Je ne sais pas ce que fait widget.focus() par contre, dans la documentation, on y trouve widget.focus_set() pour faire çà (et ça marche).

    Citation Envoyé par Hominidé
    cependant avant de poster ma question, j'ai bien pensé à cette possibilité
    Le code que vous avez posté montré que vous n'y avez pas cru plus que çà. C'est normal quand on débute et c'est pas grave (ça s'arrangera avec le temps).

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

  5. #5
    Membre expérimenté
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    870
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 870
    Points : 1 522
    Points
    1 522
    Billets dans le blog
    4
    Par défaut
    Effectivement, je viens de voir mon erreur en même temps que ta réponse, en regardant focus() dans la doc...
    Merci. Tout s'explique
    #Rien de nouveau sous le soleil, tout est vanité comme courir après le vent!
    Developpement pour Android avec Python3/Kivy/Buildozer

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

Discussions similaires

  1. [Débutant] ListBox, ObservableCollection, Binding TextBox Mode=TwoWay ne fonctionne pas
    Par Mr Cogito dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 20/07/2015, 16h18
  2. Binding qui ne fonctionne pas partout
    Par Invité dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 26/12/2010, 15h42
  3. Le binding des mes SetAccelerator ne fonctionne pas
    Par k-koo dans le forum Composants
    Réponses: 3
    Dernier message: 22/10/2009, 09h39
  4. UserControl: Pourquoi le Binding sur ses propres propriétés ne fonctionne pas ?
    Par Chekov dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 07/10/2009, 22h08
  5. Réponses: 2
    Dernier message: 14/04/2009, 12h27

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