동적으로 생성 된 레이블 스택을 스크롤 가능하게 만들기 위해 ScollView 위젯을 사용할 때 몇 가지 문제가 있습니다. ScrollView를 사용해야하는 방식을 오해하고있는 사람이있을 수 있으므로 누군가가 나를 위해 설명해 줄 수 있기를 바랍니다. 다음 코드는 csv에서 많은 데이터를 읽습니다. 코드가 표시되면 많은 양의 데이터가 있으면 프로그램은 기본적으로 모든 텍스트/레이블을 GridLayout으로 압축하려고 시도합니다. 데이터를 스크롤 가능하게하고 싶습니다. 다음은 코드의 추상화 된 버전입니다.ScrollView 위젯이 kivy에서 스크롤되지 않습니다
class showData(Screen):
def __init__(self, **kwargs):
super(showData, self).__init__(**kwargs)
self.my_data = read_csv_to_dict()
self.data_exists = 0 if len(self.my_data) == 0 else 1
### Create Widgets ###
layout_main = BoxLayout(orientation = 'vertical')
layout_back_button = BoxLayout(padding = [0, 0, 0, 20])
self.layout_data = GridLayout(cols = 3 if self.data_exists else 1)
self.scrollview_data = ScrollView()
button_back = Button(text = 'Main menu')
### Add widgets ###
self.add_widget(layout_main)
layout_main.add_widget(layout_back_button)
layout_main.add_widget(self.scrollview_data)
layout_back_button.add_widget(button_back)
if self.data_exists:
self.layout_data.add_widget(Label(text = 'label 1'))
self.layout_data.add_widget(Label(text = 'label 2'))
self.layout_data.add_widget(Label(text = 'label 3'))
self.display_data(self)
self.scrollview_data.add_widget(self.layout_data)
else:
self.scrollview_data.add_widget(Label(text = 'Records are empty'))
### Create button bindings ###
button_back.bind(on_press = switch_screen_to_main)
def display_data(obj, self):
data_dictReader = read_csv_to_dictReader()
for data_row in data_dictReader:
for value in data_row.values():
self.layout_data.add_widget(Label(text = value))
GridLayout/데이터는 스크롤 할 수 없습니다. 누군가가 스크롤 할 수 있도록 위의 코드를 수정하는 방법을 알려 줄 수 있습니까? 고맙습니다.
위에서 언급 한 다양한 속성으로 논쟁을 벌인 후 작동 중입니다. 감사! –