하나의 편리한 위젯에 드롭 다운 목록과 해당 버튼을 캡슐화하기 위해 파이썬 클래스를 작성하고 있는데 문제가 생겼습니다.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)
그러나 so :
self.File_Menu.The_Btns[0].bind(on_release = self.Insert_File_Menu.open)
컴파일러는 목록이 범위를 벗어났다는 예외를 throw합니다. 추가 검사에서 Create_Menu 함수를 호출하더라도 The_Btns의 값이 빈 목록에서 변경되지 않는다는 것을 알았습니다. 그래서, 내 질문은 : 어떻게이 문제를 해결할 수 있습니까?
도움을 주시면 감사하겠습니다. 감사!
감사합니다. 나는 관습 중 일부가 아직 침몰하지 않도록 파이썬에 처음 온 사람이다. 이게 내가 가지고있는 문제를 고쳐야 해. – Woody1193