Объект "Метод" не повторяемая ошибка

В настоящее время появляется сообщение об ошибке при попытке отобразить данные базы данных в графическом интерфейсе tkinter. Ошибка Method is not iterableЯ понимаю, что означает ошибка, но понятия не имею, как мне исправить ее.

Вот класс, из которого я возвращаю всю информацию:

class Database:
    def __init__(self, master):
        self.master = master

        self.conn = sqlite3.connect(':memory:')
        self.c = self.conn.cursor()

        self.c.execute("""CREATE TABLE Employees (
                        FirstName text,
                        Surname text,
                        Age Integer,
                        Postcode VARCHAR,
                        Wage Integer,
                        Email VARCHAR,
                        Hours Integer
                        )""") #Creation of Database

        self.conn.commit()

        self.addEmployees() # running the function, need to fix this, Only run when "add employee" button is pressed!


    def ReadData(self):
        self.c.execute("SELECT * FROM Employees")
        return self.c.fetchall() # this reads and returns all the data.

    def addEmployees(self): # This function adds all the info the users have put into the entry in new EmployeeEmail

        self.c.execute("INSERT INTO Employees VALUES (:FirstName, :Surname, :Age, :Postcode, :Wage, :Email, :Hours)",
                     {'FirstName':"Sharjeel" , 'Surname':"Jan" , 'Age':"21" ,
                     'Postcode':"aa" , 'Wage':"1220000" , 'Email':"aa" , 'Hours':"230"})

        self.conn.commit()

Довольно просто, вот где я пытаюсь отобразить данные при нажатии кнопки:

class MainPageGUI:
    def __init__(self, master):

        self.master = master
        self.master.title("Jans Corp")
        self.master.configure(background='lightgrey')
        self.master.geometry("1200x800")



    def DisplayData(self):
            self.TheData = Database(self.master)
            self.ReturnedData = getattr(self.TheData, 'ReadData') <------ Here is where i am receiving the error.
            for data in enumerate(self.ReturnedData):
                tk.Label(self.master, text = data[0]).grid(row = 1, column = 0)
                tk.Label(self.master, text = data[1]).grid(row = 1, column = 1)
                tk.Label(self.master, text = data[2]).grid(row = 1, column = 2)
                tk.Label(self.master, text = data[3]).grid(row = 1, column = 3)
                tk.Label(self.master, text = data[4]).grid(row = 1, column = 4)
                tk.Label(self.master, text = data[5]).grid(row = 1, column = 5)
                tk.Label(self.master, text = data[6]).grid(row = 1, column = 6)

1 ответ

Решение

Вы должны позвонить ReadData метод:

# ReadData is a method, so call it:
self.ReturnedData = getattr(self.TheData, 'ReadData')()  # note the extra '()'
# Or, even more obviously, as pointed out in the comments
# self.ReturnedData = self.TheData.ReadData()
for data in enumerate(self.ReturnedData):  # I think this line threw the error
Другие вопросы по тегам