有人可以帮我修复此ScrollView吗?

时间:2019-01-13 13:48:11

标签: python kivy

当我运行下面的代码时,我无法滚动。我想滚动整个屏幕。

我该如何实现?

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())

所有内容都会显示,但滚动条不会显示。

2 个答案:

答案 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 的选择是任意的,只是为了确保3000FloatLayout大。而ScrollView使滚动条更易于查看。

答案 1 :(得分:0)

我找到了答案。

首先,您必须设置size_hint: (1, None),以便设置height: 40来确定可以滚动多长时间。

如果您不必设置多长时间,则可以这样设置:height: sum([c.height for c in self.children])