Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我调用的函数是错误的吗?_Python_Tkinter - Fatal编程技术网

Python 我调用的函数是错误的吗?

Python 我调用的函数是错误的吗?,python,tkinter,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("

我正在使用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'

这就是错误所在,我知道应该定义它,但我不知道它到底是什么意思…

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

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

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

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

每次单击按钮时,它都将创建新的
ToDoList
实例。
ToDoList
的实例应在全局范围内创建一次。