0
使用下面的代碼,在我將信息輸入到應用程序的文本框後,offset_back返回一個list和self.main,我的id .kv文件創建一個滾動視圖 添加了佈局,但當我嘗試重新輸入數據第二次發生這種情況:「raise Exception('ScrollView accept only one widget')」Kivy ScrollView exception raise Exception('ScrollView accept only one widget')
我需要重置自我。主要以某種方式,如果是的話,我怎麼能做到這一點? 謝謝。
def set_back_offset(self):
layout = GridLayout(cols=1, spacing=10, size_hint_y=None)
layout.bind(minimum_height=layout.setter('height'))
# catch empty box input which is a str, as Decimal will throw error.
if self.initial_bet.text == str() or self.initial_odds.text == str():
pop_warning().open()
#make sure entered unicode text is numeric, if not throw pop-up warning
elif not unicode.isnumeric(self.initial_bet.text) or not unicode.isnumeric(self.initial_odds.text):
pop_warning().open()
else:# all is good, create widgets
for details in offset_back(Decimal(self.initial_bet.text), Decimal(self.initial_odds.text)):
btn = Button(text=str(details[0]), size_hint_y=None, height=40,background_color= (255,0,0,1))
layout.add_widget(btn)
self.main.add_widget(layout)
`
,謝謝,我明白了這個例外,我只是不知道如何去除孩子,這是我第一次使用任何gui,所以對我來說都是新的。如果我移除孩子,則沒有任何東西返回到屏幕。我在self.main.add_widget(layout)後面做self.main.remove_widget(self.main.children [0])。我認爲它會顯示數據,然後刪除孩子,我錯了嗎? –
您需要在添加新的*之前刪除舊的*。我原以爲它會比原來的描述早崩潰。無論哪種方式,請繼續遵循這個總體思路來解決問題。 – inclement
我看到我的邏輯是倒退,我把self.main.remove_widget(self.main.children [0])放在方法的第一行,但我仍然得到相同的異常。我會繼續按照你所建議的方式工作,並將解決它,再次感謝。 –