Tkinter错误,绑定Entry对象与函数,给出2个参数,需1个
我刚开始学习Tkinter。为了学习Tkinter,我跟着这个教程,并尝试把它用在我的新小项目上。不过,当我在我创建的输入框里按下回车键时,出现了一个错误。以下是我的代码:
# -*- coding: utf-8 -*-
import Tkinter
class PocketDEX(Tkinter.Tk):
def __init__(self, parent):
Tkinter.Tk.__init__(self, parent)
self.parent = parent
self.initialize()
def initialize(self):
self.grid()
self.labelVariable = Tkinter.StringVar()
self.labelVariable.set("Cuvântul căutat este:")
label = Tkinter.Label(self, textvariable = self.labelVariable, anchor="w")
label.grid(column = 0, row = 0)
self.entry = Tkinter.Entry(self)
self.entry.grid(column = 1, row = 0, sticky='EW')
self.entry.bind("<Return>", self.EnterPressed)
def EnterPressed(self):
print "It worked!"
if __name__ == "__main__":
app = PocketDEX(None)
app.title('★ PocketDEX ★')
app.mainloop()
我遇到的错误是:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1470, in __call__
return self.func(*args)
TypeError: EnterPressed() takes exactly 1 argument (2 given)
我不太明白为什么会有两个参数,我是在Windows 8.1 Pro上使用Python 2.7.6。
1 个回答
2
另一个参数是 event
。这很正常。事件有一些属性,你可以访问这些属性。例如:
event.keysym
>>> 'Return'
处理这个问题最简单的方法就是修改回调方法,让它接受事件参数:
def EnterPressed(self, event):
print "It worked!"
更多信息可以查看: http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm