#python #scroll #kivy
#python #прокрутка #kivy
Вопрос:
Я впервые использую виджет просмотра прокрутки kivys, и я не уверен, как я его запускаю. Я хочу прокрутить вверх и выполнить через разные метки.
Как я могу этого добиться?
Какие атрибуты необходимы для виджета просмотра прокрутки? Могу ли я использовать для этого какой-либо макет?
Спасибо
Этот код, который на данный момент не работает:
<YearLabel@ButtonBehavior Label>:
<YearScreen>:
canvas.before:
Color:
rgba: 1,1,1,0.25
Rectangle:
pos: self.pos
size: self.size
canvas.after:
Color:
rgba : 0,0,0,1
Rectangle:
pos: 160,1560
size: 419,60
ScrollView:
scroll_timeout: 250
scroll_distance: 20
do_scroll_y: True
do_scroll_x: False
height: 100
GridLayout:
cols : 1
spacing: 10
padding: 10
height: 50
YearLabel:
id: year_label
font_name: "Fonts/sans-serif.ttf"
text : "2020"
color: 0,0,0,1
pos : 0,1200
font_size: "120sp"
YearLabel:
id: year_label
font_name: "Fonts/sans-serif.ttf"
text : "2021"
color: 0,0,0,1
pos: 0,900
font_size: "120sp"
YearLabel:
id: year_label
font_name: "Fonts/sans-serif.ttf"
text : "2022"
color: 0,0,0,1
pos: 0,600
font_size: "120sp"
YearLabel:
id: year_label
font_name: "Fonts/sans-serif.ttf"
text : "2023"
color: 0,0,0,1
pos: 0,300
font_size: "120sp"
YearLabel:
id: year_label
font_name: "Fonts/sans-serif.ttf"
text : "2024"
color: 0,0,0,1
pos: 0,0
font_size: "120sp"
YearLabel:
id: year_label
font_name: "Fonts/sans-serif.ttf"
text : "2025"
color: 0,0,0,1
pos: 0,-300
font_size: "120sp"
YearLabel:
id: year_label
font_name: "Fonts/sans-serif.ttf"
text : "2026"
color: 0,0,0,1
pos: 0,-600
font_size: "120sp"
YearLabel:
id: year_label
font_name: "Fonts/sans-serif.ttf"
text : "2027"
color: 0,0,0,1
pos: 0,-900
font_size: "120sp"
YearLabel:
id: year_label
font_name: "Fonts/sans-serif.ttf"
text : "2028"
color: 0,0,0,1
pos: 0,-1200
font_size: "120sp"
YearLabel:
id: year_label
font_name: "Fonts/sans-serif.ttf"
text : "2029"
color: 0,0,0,1
pos: 0,-1500
font_size: "120sp"
YearLabel:
id: year_label
font_name: "Fonts/sans-serif.ttf"
text : "2030"
color: 0,0,0,1
pos: 0,-1800
font_size: "120sp"
Ответ №1:
ScrollView
Не будет работать, если его дочерний элемент (the GridLayout
) меньше, чем ScrollView
. Как правило, GridLayout
он будет достаточно большим, чтобы вместить все его дочерние элементы (the YearLabels
). Удобно, GridLayout
что можно вычислить этот размер. Вот модифицированная версия вашего kv
, которая его использует:
ScrollView:
scroll_timeout: 250
scroll_distance: 20
do_scroll_y: True
do_scroll_x: False
GridLayout:
cols : 1
spacing: 10
padding: 10
size_hint_y: None # required since we are setting height
height: self.minimum_height # let GridLayout calculate height
Кроме того, я удалил height: 100
из ScrollView
, поскольку это не имело никакого эффекта.
Для GridLayout
вычисления minimum_height
все его дочерние элементы должны быть четко определены heights
. Итак, я добавил к вашему YearLabel
правилу:
<YearLabel@ButtonBehavior Label>:
size_hint: 1, None
height: dp(100)