2013-06-23 4 views
0

Моей программы:Проблем с Tkinter Binding для ввода/возврата

#!/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() 

Это открывает окно, но когда я нажимаю вернуть или войти в него ничего не делает.

ответ

3

Это потому, что вы должны установить фокус на кадре, чтобы реагировать на событие:

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

Кстати, обратные вызовы получит событие Tkinter в качестве аргумента, так ret должен быть определен как def ret(self, event), или связать событие с лямбда-функцией и не использовать аргумент:

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