다음 코드를 사용하여 내 앱의 텍스트 상자에 정보를 입력하면 offset_back이 목록과 self.main을 반환합니다. .kv 파일을 사용하여 스크롤보기를 만듭니다. 레이아웃을 추가하지만 데이터를 다시 입력하려고하면 "예외 발생 ('ScrollView는 하나의 위젯 만 허용')"Kivy ScrollView 예외 발생 예외 ('ScrollView는 하나의 위젯 만 허용')
자기를 재설정해야합니까? 주된 방법으로, 그렇다면 어떻게 이것을 할 수 있습니까? 감사합니다. .
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])을 메서드의 첫 번째 줄에 넣었지만 여전히 동일한 예외가 발생했습니다. 나는 당신이 제안한 선을 따라 일해 나갈 것이고 그것을 다시 고맙게 생각할 것입니다. 다시 감사드립니다. –