0
我正在構建一個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