Tkinter - ne Peut pas lier la touche flèche événements
Je suis en train de lier les touches fléchées gauche et droite pour un événement dans Tkinter, mais quand je lance le programme, il semble que les événements ne sont pas de déclenchement. Voici le code:
from Tkinter import *
main = Tk()
def leftKey(event):
print "Left key pressed"
def rightKey(event):
print "Right key pressed"
frame = Frame(main, width=100, height=100)
frame.bind('<Left>', leftKey)
frame.bind('<Right>', rightKey)
frame.pack()
frame.mainloop()
Pourquoi ça ne marche pas?
OriginalL'auteur aftrumpet | 2013-11-10
Vous devez vous connecter pour publier un commentaire.
Essayer de liaison de votre principale variable:
Je dois expliquer que cela fonctionne parce que les Savoirs traditionnels sont mis au courant des liaisons parce que la principale fenêtre a le focus du clavier. @BryanOakley réponse expliqué, vous pourriez tout aussi bien définir le focus clavier à l'autre cadre:
Voir plus sur des événements et des liaisons au effbot.
En outre, vous pouvez également ré-écrire cette sorte que votre application est une sous-classe de
Tkinter.Frame
comme suit:Le réel problème est tout simplement que le cadre n'a pas le focus du clavier. Si vous mettez le focus sur le cadre, le code en question ne fonctionne correctement.
Merci, je vais mettre à jour la réponse à cette solution alternative.
La chose importante à garder à l'esprit est de lier les clés de la racine/cadre de fenêtre, pas pour toutes les images (ni le widget affichant le raccourci).
OriginalL'auteur Fiver
Le problème est tout simplement que l'image que vous êtes en liaison n'est pas le focus du clavier. Lorsque vous appuyez sur une touche du clavier, l'événement est envoyé à l'widget avec le focus du clavier. Par défaut, une image n'a pas le focus du clavier.
Ajouter la ligne suivante dans votre code pour déplacer le focus clavier à l'image:
OriginalL'auteur Bryan Oakley
il ajoute entre parenthèses, qui sont nécessaires pour moi
Cette réponse, c'est exactement identiques à Cinq, en réponse à l'exception c'est pour python 3. mais l'OP est à l'aide de python 2
from tkinter import *
ne fonctionne pas et supports de ne pas faire de différence.Les crochets sont nécessaires pour moi.
OriginalL'auteur mc diamond 144
Il pourrait être que vous ne pas intercepter le droit des événements. Les flèches sur le clavier numérique et les autres ont différents noms symboliques.
Voir http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/key-names.html
celles du pavé numérique sont nommés avec un 'KP_' en face.
Espère que cela aide. Pardon un débutant si pas pertinente 🙂
OriginalL'auteur Claude