Я создаю класс python для инкапсуляции раскрывающегося списка и его кнопок в один удобный виджет, и я столкнулся с проблемой.Python - Изменение значения переменной класса в функции
class DropDownMenu(DropDown):
def __init__(self, **kwargs):
super(DropDownMenu, self).__init__(**kwargs)
self.The_Menu = DropDown()
self.The_Btns = []
self.Num_Btns = 0
def Set_Num_Btns(self):
self.Num_Btns = len(self.The_Btns)
def Create_Menu(self, Btn_Names):
# Populate List Size Property
if (self.Num_Btns == 0):
self.Set_Num_Btns()
# Add Buttons to the Drop-Down
for i in range(0, self.Num_Btns):
self.The_Btns.append(Button(text = Btn_Names[i], size_hint_y = None, height = 20))
self.The_Menu.add_widget(self.The_Btns[i])
Это компилируется нормально, и когда я пытаюсь создать выпадающее меню, я получаю то, что я хочу:
self.File_Menu = DropDownMenu()
self.File_Menu.Create_Menu(self.File_Menu_Names)
self.add_widget(self.File_Menu)
Но, если я пытаюсь связать любую из кнопок ни к чему, как так:
self.File_Menu.The_Btns[0].bind(on_release = self.Insert_File_Menu.open)
Компилятор выдает исключение, указав, что список был вне пределов. При дальнейшей проверке я понял, что, хотя я вызываю функцию Create_Menu, значение The_Btns не изменяется из пустого списка. Итак, мой вопрос: как я могу исправить эту проблему?
Любая помощь будет оценена по достоинству. Благодаря!
Спасибо за помощь. Я новичок в python, поэтому некоторые из конвенций еще не утонули. Это должно решить проблему, с которой я сталкиваюсь – Woody1193