AttributeError: у объекта [class] нет атрибута [переменная в классе]? - PullRequest
0 голосов
/ 09 февраля 2020

Часть моей программы должна иметь возможность проигрывать MIDI-файлы, поэтому у меня есть запись в tkinter, которая предназначена для того, чтобы позволить пользователю ввести путь одного, но по какой-то причине другие подпрограммы в классе не будут работать с переменными внутри класса. Есть идеи?

class PlaySong(tk.Frame):
    def __init__(self, master):
        tk.Frame.__init__(self, master)
        tk.Label(self, text="Play Song").pack(side="top", fill="x", pady=10)
        tk.Label (self,text= r"Enter in path of MIDI file (e.g C:\Users\etc.)").pack(side="top", fill="x", pady=10)
        SongPath = tk.Entry(self)
        SongPath.pack()
        tk.Button(self, text="Enter path", command = self.SongCheck).pack(pady=10)
        tk.Button(self, text="Return to main menu",fg="red2", command=lambda: master.switch_frame(MainMenu)).pack(fill="x")

    def SongCheck(self):
        path = self.SongPath.get()
        print(path)

1 Ответ

1 голос
/ 09 февраля 2020

SongPath определяется как локальная переменная в методе __init__. Чтобы сделать эту переменную атрибутом, напишите

self.SongPath = tk.Entry(self)

Обратите внимание, что соглашения об именах, которые вы используете, например, vairables, конфликтуют с PEP-8 . Общим соглашением является использование snake_case для переменных экземпляра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...