我正在使用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'
这是错误,我知道应该定义它,但我真的不知道它的含义...
答案 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)