我调用该函数是否错误?

时间:2019-05-08 09:37:03

标签: python tkinter

我正在使用OOP,但遇到一个问题,当我使用tkinter命令在类中调用该方法时,会给我一个错误。

我尝试了不同的方法调用方法,但是我被困住了。

class ToDoList():
    def __init__(self):
        self.tasks = []

    def update_listbox(self):
        self.clear()
        for task in self.tasks:
            box_tasks.insert("end", task)

    def clear(self):
        box_tasks.insert("end", task)

    def add(self):
        task=txt_input.get()
        if task !=" ":
            tasks.append(task)
            self.update_listbox()
        else:
            display["text"]=("Input a task")

tkinter命令调用:

add=tk.Button(root, text="Add", fg="DarkOrchid3", bg="blanched almond", command=ToDoList.add)
add.pack(pady=5, ipadx=15)

txt_input=tk.Entry(root, width=25)
txt_input.pack(pady=15)

错误:

TypeError: add() missing 1 required positional argument: 'self'

这是错误,我知道应该定义它,但我真的不知道它的含义...

2 个答案:

答案 0 :(得分:1)

add是一个实例方法,您没有实例化ToDoList。如果创建ToDoList的实例,则可以传递该实例的.add方法。

todo = ToDoList()
add = tk.Button(root, text="Add", fg="DarkOrchid3", bg="blanched almond", command=todo.add)

答案 1 :(得分:0)

尝试通过为类ToDoList()创建对象。由于可以从该类的对象访问类函数。

add=tk.Button(root, text="Add", fg="DarkOrchid3", bg="blanched almond", command=ToDoList().add)