Python 使用Kivy在ScrollView中使用RST文档

Python 使用Kivy在ScrollView中使用RST文档,python,kivy,Python,Kivy,我有点为难。在使用Kivy的ScrollView布局和(当前的实验性)重构文本渲染器模块时,我遇到了一个小问题。每当我运行代码时,终端都会向我发送垃圾邮件: [CRITICAL] [Clock] Warning, too much iteration done before the next frame. Check your code, or increase the Clock.max_iteration attribute 现在,应用程序似乎运行得非常好,直到您进入ScrollView布

我有点为难。在使用Kivy的ScrollView布局和(当前的实验性)重构文本渲染器模块时,我遇到了一个小问题。每当我运行代码时,终端都会向我发送垃圾邮件:

[CRITICAL] [Clock] Warning, too much iteration done before the next frame. Check your code, or increase the Clock.max_iteration attribute
现在,应用程序似乎运行得非常好,直到您进入ScrollView布局中包含rST文档的页面。那页上有各种奇怪的东西。主滚动视图将慢慢向下滚动,直到永远,从页面拖到白色,并且rST文档被奇怪地放置,稍微向左移动

但是,当我删除文档时,屏幕和应用程序的行为完全正常,运行平稳。有没有人知道我如何解决这个问题,使页面正常工作?(我是否提到rST文档最初在旋转木马中,但我拿出了旋转木马以查看这是否是问题所在。) 以下是Kivy语言代码:

<Page>:
    orientation: 'vertical'
    ScrollView:
        size_hint: (.99, .99)
        StackLayout:
            size_hint_y: None
            id: content_layout
            height: self.minimum_height
            WrappedLabel:
                text: "Test"
                font_size: min(root.height, root.width)
            RstDocument:
                underline_color: 'blue'
                text:("Some Text")
:
方向:“垂直”
滚动视图:
大小提示:(.99、.99)
堆栈布局:
尺寸提示:无
id:内容和布局
高度:自身最小高度
包装标签:
文本:“测试”
字体大小:最小值(root.height,root.width)
RST文件:
下划线颜色:“蓝色”
文本:(“某些文本”)

问题是rST文档可能是基于ScrollView布局的吗?

有时
高度:self。最小高度
和类似的东西就像是在射自己的脚。首先,一定要对这些事情进行评论,因为如果你不做一些花哨的事情,那么尺寸就是问题所在

现在,为什么这是一个问题?它的
最小高度
是从
最小尺寸
设置的,我想它是在某个地方设置的,有一些初始值不是零

不过不要混淆,
minimum_height
在开始时确实默认为零,但随后可能会在每个添加的小部件上重新计算。如果你在你的
height:self.minimum\u height
后面加上
,你就会明白我的意思了

它为什么这样做?简单!您没有为这些子项设置绝对大小(每个子项都有
size\u hint==[1,1]

另外,
ScrollView
希望其大小大于ScrollView(如果我没记错的话)(以便它可以滚动)

来自kivy.lang导入生成器
从kivy.base导入runTouchApp
从kivy.uix.boxlayout导入boxlayout
Builder.load_字符串(“”)
:
方向:“垂直”
滚动视图:
大小提示:(.99、.99)
堆栈布局:
尺寸提示:无
id:内容和布局
高度:自身最小高度
on_高度:打印(自身高度)
标签:
大小提示:无,无
尺码:100,30
文本:“测试”
字体大小:最小值(root.height,root.width)
RST文件:
大小提示:无,无
尺寸:1001000
下划线颜色:“蓝色”
文本:(“某些文本”)
''')
类别测试(BoxLayout):通过
runTouchApp(测试())
从子项中删除
size\u提示
size
,您的
迭代次数过多

from kivy.lang import Builder
from kivy.base import runTouchApp
from kivy.uix.boxlayout import BoxLayout
Builder.load_string('''
<Test>:
    orientation: 'vertical'
    ScrollView:
        size_hint: (.99, .99)
        StackLayout:
            size_hint_y: None
            id: content_layout
            height: self.minimum_height
            on_height: print(self.height)
            Label:
                size_hint: None, None
                size: 100, 30
                text: "Test"
                font_size: min(root.height, root.width)
            RstDocument:
                size_hint: None, None
                size: 100, 1000
                underline_color: 'blue'
                text:("Some Text")
''')
class Test(BoxLayout): pass
runTouchApp(Test())