Python 我能';不要滚动我的页面

Python 我能';不要滚动我的页面,python,listview,kivy,Python,Listview,Kivy,如何在滚动视图或列表视图中添加我的小部件以滚动它 我已经写了一段代码,但效果不好,这是我的main.py: from kivy.app import App from kivy.lang import Builder from kivy.uix.boxlayout import BoxLayout from kivy.uix.scrollview import ScrollView from random import random class chat_history(Box

如何在
滚动视图
列表视图
中添加我的小部件以滚动它

我已经写了一段代码,但效果不好,这是我的main.py

from kivy.app import App 
from kivy.lang import Builder 

from kivy.uix.boxlayout import BoxLayout 
from kivy.uix.scrollview  import ScrollView  

from random import random

class chat_history(BoxLayout):
 def profile(self):
  return random(),random(),random()


Builder.load_file('widg.kv')

class myApp(App ):
 def build(self):
  x=BoxLayout(orientation='vertical')
  s=ScrollView()
  for i in range(1,21):
   x.add_widget(chat_history(height=50))
  s.add_widget(x)
  return s

myApp().run()
<chat_history>:
height:100
BoxLayout:
    height:50
    name:'haha very funny '
    size_hint_y:None
    id:cv
    orientation:'horizontal'
    canvas:
        Color:
            rgb:root.profile()
        Ellipse:
            pos:root.pos
    Label:
        text_hint:{'x':0,'y':0.1}
        pos:root.pos 
        size_hint_x:0.7
        height:cv.height 
        text:cv.name
        id:lbl
这是我的kv文件

from kivy.app import App 
from kivy.lang import Builder 

from kivy.uix.boxlayout import BoxLayout 
from kivy.uix.scrollview  import ScrollView  

from random import random

class chat_history(BoxLayout):
 def profile(self):
  return random(),random(),random()


Builder.load_file('widg.kv')

class myApp(App ):
 def build(self):
  x=BoxLayout(orientation='vertical')
  s=ScrollView()
  for i in range(1,21):
   x.add_widget(chat_history(height=50))
  s.add_widget(x)
  return s

myApp().run()
<chat_history>:
height:100
BoxLayout:
    height:50
    name:'haha very funny '
    size_hint_y:None
    id:cv
    orientation:'horizontal'
    canvas:
        Color:
            rgb:root.profile()
        Ellipse:
            pos:root.pos
    Label:
        text_hint:{'x':0,'y':0.1}
        pos:root.pos 
        size_hint_x:0.7
        height:cv.height 
        text:cv.name
        id:lbl
:
身高:100
盒子布局:
身高:50
名字:'哈哈,很有趣'
尺寸提示:无
id:cv
方向:'水平'
画布:
颜色:
rgb:root.profile()
椭圆:
pos:root.pos
标签:
文本提示:{'x':0,'y':0.1}
pos:root.pos
大小提示:0.7
高度:cv高度
文本:cv.name
id:lbl

首先,您应该防止布局自动调整其高度以适应其父窗口小部件的高度(
size\u hint\u y=None

另一方面,请确保高度足够,以便有东西可以滚动。必须明确指定布局高度

from kivy.app import App 
from kivy.lang import Builder 
from kivy.uix.boxlayout import BoxLayout 
from kivy.uix.scrollview  import ScrollView  
from random import random


kv_text = '''
<chat_history>:
    size_hint_y: None
    height:100
    BoxLayout:
        height:50
        name:'haha very funny '
        size_hint_y:None
        id:cv
        orientation:'horizontal'
        canvas:
            Color:
                rgb:root.profile()
            Ellipse:
                pos:root.pos
        Label:
            text_hint:{'x':0,'y':0.1}
            pos:root.pos 
            size_hint_x:0.7
            height:cv.height 
            text:cv.name
            id:lbl
'''

class chat_history(BoxLayout):
    def profile(self):
        return random(),random(),random()

class myApp(App ):
    def build(self):
        Builder.load_string(kv_text)
        x=BoxLayout(orientation='vertical',  size_hint_y=None)  #<<<<<<<<<<<
        x.bind(minimum_height=x.setter('height'))               #<<<<<<<<<<<
        s=ScrollView()
        for i in range(1,21):
            x.add_widget(chat_history(height=50))
        s.add_widget(x)
        return s

myApp().run()
从kivy.app导入应用
从kivy.lang导入生成器
从kivy.uix.boxlayout导入boxlayout
从kivy.uix.scrollview导入scrollview
从随机导入随机
kv_文本=“”
:
尺寸提示:无
身高:100
盒子布局:
身高:50
名字:'哈哈,很有趣'
尺寸提示:无
id:cv
方向:'水平'
画布:
颜色:
rgb:root.profile()
椭圆:
pos:root.pos
标签:
文本提示:{'x':0,'y':0.1}
pos:root.pos
大小提示:0.7
高度:cv高度
文本:cv.name
id:lbl
'''
课堂聊天记录(BoxLayout):
def配置文件(自我):
返回random(),random(),random()
类别myApp(应用程序):
def生成(自):
生成器.加载字符串(kv\U文本)
x=BoxLayout(方向=垂直),尺寸\u提示\u y=None)#