Tkinter错误,绑定Entry对象与函数,给出2个参数,需1个

1 投票
1 回答
3770 浏览
提问于 2025-04-18 02:42

我刚开始学习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

撰写回答