2013-06-23 7 views
0

Mon programme:Problèmes avec Tkinter liaison pour entrer/retour

#!/usr/bin/python 
from Tkinter import * 
class App: 
    def __init__(self,master): 
     frame = Frame(master,width = 100,height = 100) 
     frame.bind('<Return>',self.ret) 
     frame.pack() 

    def ret(self): 
     print "You pressed enter" 

root = Tk() 
app = App(root) 
root.mainloop() 

Il ouvre la fenêtre, mais quand j'appuyer sur Entrée, il ne fait rien.

Répondre

3

Ceci est parce que vous devez définir l'accent sur le cadre pour répondre à l'événement:

frame = Frame(master,width = 100,height = 100) 
frame.focus_set() 

Par ailleurs, les callbacks reçoivent un événement Tkinter comme argument, donc ret devrait être défini comme def ret(self, event), ou lier l'événement avec une fonction lambda et ne pas utiliser l'argument:

frame.bind('<Return>', lambda e: self.ret())