Метка, которая может расти вертикально, но оборачивает текст на определенную ширину:
<CustomLabel>:
size_hint_y: None
text_size: self.width, None
height: self.texture_size[1]
Чтобы прокрутить GridLayout по его оси X / по горизонтали и Y / по вертикали, установите для свойства size_hint значение (Нет, нет).
ScrollView - ScrollEffect, scroll_type , bar_width и т. Д.
По умолчанию ScrollView позволяет прокручивать по осям X и Y. Вы можете явно отключить прокрутку на оси, установив для свойств do_scroll_x или do_scroll_y значение False.
Чтобы прокрутить GridLayout по его оси Y / по вертикали, установите дочерний элемент
ширину ScrollView (size_hint_x = 1) и установите
Свойство size_hint_y для None:
Когда прокрутка выходит за границы ScrollView, она использует ScrollEffect для обработки переполнения.
scroll_type
Устанавливает тип прокрутки, который будет использоваться для содержимого просмотра прокрутки.
Доступны следующие варианты: [‘content’], [‘bars’], [‘bars’, ‘content’]
[‘bars’] Контент прокручивается путем перетаскивания или прокрутки полос прокрутки.
Пример
main.py
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.properties import ObjectProperty
class CustomLabel(Label):
pass
class RootWidget(BoxLayout):
content_holder_py = ObjectProperty(None)
def __init__(self, **kwargs):
super(RootWidget, self).__init__(**kwargs)
temp = "Long stringLong stringLong stringLong stringLong stringLong stringLong stringLong stringLong stringLong stringLong stringLong stringLong stringLong stringLong stringLong stringLong stringLong stringLong stringLong stringLong stringLong stringLong stringLong string"
for i in range(1141):
line_of_text = CustomLabel(text=temp)
self.content_holder_py.add_widget(line_of_text)
class TestApp(App):
title = "Kivy ScrollView of Labels Demo"
def build(self):
return RootWidget()
if __name__ == "__main__":
TestApp().run()
test.kv
#:kivy 1.11.0
#:import Window kivy.core.window.Window
<CustomLabel>:
size_hint_y: None
text_size: self.width, None
height: self.texture_size[1]
<RootWidget>:
orientation: "vertical"
content_holder_py: content_holder_kv
ScrollView:
bar_width: 10
bar_color: 0, 0, 1, 1 # blue
bar_inactive_color: 1, 0, 0, 1 # red
effect_cls: "ScrollEffect"
scroll_type: ['bars']
size_hint: (1, None)
size: (Window.width, Window.height)
GridLayout:
id: content_holder_kv
cols: 1
spacing: 10
size_hint_y: None
height: self.minimum_height
выход