Я неправильно называю функцию? - PullRequest
0 голосов
/ 08 мая 2019

Я работаю с ООП, и я столкнулся с проблемой, когда при вызове метода внутри класса с помощью команды 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 ]

1 голос
/ 08 мая 2019

add - это метод экземпляра, а вы не создаете экземпляр ToDoList.Если вы создаете экземпляр ToDoList, вы можете передать метод .add этого экземпляра.

todo = ToDoList()
add = tk.Button(root, text="Add", fg="DarkOrchid3", bg="blanched almond", command=todo.add)
0 голосов
/ 08 мая 2019

Попробуйте создать объект для класса ToDoList(). Как функции класса могут быть доступны из объекта этого класса.

add=tk.Button(root, text="Add", fg="DarkOrchid3", bg="blanched almond", command=ToDoList().add)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...