当我运行下面的代码时,我无法滚动。我想滚动整个屏幕。
我该如何实现?
from kivy.base import runTouchApp
#kivy.require("1.8.0")
from kivy.uix.floatlayout import FloatLayout
from kivy.lang import Builder
from kivy.config import Config
from kivy.uix.scrollview import ScrollView
from kivy.properties import StringProperty
Config.set('graphics', 'window_state', 'maximized')
Builder.load_string('''
<ScrollableLabel>:
FloatLayout:
AsyncImage:
source:'' #html here
allow_stretch: True
keep_ratio: False
pos_hint: {"top": 1, 'right':1}
size_hint: 1, 1
AsyncImage:
source:'' #html here
allow_stretch: True
keep_ratio: True
pos_hint: {"top": 1, 'right':0.13}
size_hint: 0.15, 0.15
Label:
color: [66/255,134/255,244/255,1]
height: 40
font_size: 25
italic: 1
bold: 1
text: 'testing'
pos_hint: {"top": 0.96, 'right': 0.24}
size_hint: 0.1, 0.1
Label:
color: [66/255,134/255,244/255,1]
height: 40
font_size: 50
italic: 1
bold: 1
text: 'Testing\\nTesting1\\nTesting2\\nTesting3\\nTesting4'
pos: root.x, root.y+25
size_hint: 0.1, 0.1
''')
class ScrollableLabel(ScrollView):
text = StringProperty('')
if __name__ == "__main__":
runTouchApp(ScrollableLabel())
所有内容都会显示,但滚动条不会显示。
答案 0 :(得分:0)
ScrollView
的子级必须将size_hint
的至少一部分设置为None
,否则默认值size_hint: 1,1
会使子级的大小与{{ 1}},因此无需滚动。因此,只需将ScrollView
规则的初始部分更改为:
ScrollableLabel
我对<ScrollableLabel>:
bar_width: 20
FloatLayout:
size_hint: None, None
size: 3000, 3000
的选择是任意的,只是为了确保3000
比FloatLayout
大。而ScrollView
使滚动条更易于查看。
答案 1 :(得分:0)
我找到了答案。
首先,您必须设置size_hint: (1, None)
,以便设置height: 40
来确定可以滚动多长时间。
如果您不必设置多长时间,则可以这样设置:height: sum([c.height for c in self.children])