我必須創建多個按鈕(對于給定列表中的每個元素)。為此,我正在使用 for 循環。必須記錄按下的按鈕。但是,self.i 的值并未存儲在該特定實例中,即最后一個值(在本例中 - 2 已存儲,在循環完成后)。我該如何解決這個錯誤?有沒有辦法添加條件語句來檢查按鈕是否被單擊,如果是,則將 self.i 的值存儲在另一個變量中。class InfoPage(GridLayout): def __init__(self, **kwargs): super(InfoPage, self).__init__(**kwargs) self.cols = 1 self.peers = ["ishika", "nate", "nf"] for self.i in range(3): self.peers[self.i] = Button(text=peers[self.i], id=str(self.i)) self.add_widget(self.peers[self.i]) self.peers[self.i].bind(on_press=self.add) def add(self, _): id_of_button_pressed = self.peers[self.i].id print(id_of_button_pressed)
1 回答

慕斯王
TA貢獻1864條經驗 獲得超2個贊
您的add()方法正在使用self.i,這將是在方法 ( )self.i中設置的最后一個值。所以你只需要將你的方法修改為:__init__()2add()
def add(self, button):
id_of_button_pressed = button.id
print(id_of_button_pressed)
添加回答
舉報
0/150
提交
取消