我有点陷入困境。在使用Kivy的ScrollView布局和(当前实验)reStructuredText渲染器模块时,我遇到了一个小问题。每当我运行我的代码时,我的终端都会惹恼我:
[CRITICAL] [Clock] Warning, too much iteration done before the next frame. Check your code, or increase the Clock.max_iteration attribute
现在,应用程序似乎运行得非常好,直到您在ScrollView布局中找到包含rST Document的页面。那个页面做了各种奇怪的事情。主滚动视图将永远慢慢向下滚动,从页面尾随白色,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")
问题是rST文档是否基于ScrollView布局?
答案 0 :(得分:0)
有时height: self.minimum_height
和类似的东西就像用脚射击自己。绝对要先尝试对这些事情进行评论,因为如果你不做一些花哨的事情,那么尺寸就是问题。
现在,为什么这是一个问题? StackLayout
的minimum_height
设置为minimum_size
,设置为here,并且有一些不零的初始值。
不要混淆,minimum_height
在开始时确实默认为零,但随后可能会在每个添加的小部件上重新计算。如果您在on_height: print(self.height)
之后添加height: self.minimum_height
,则会明白我的意思。
为什么这样做呢?简单!您没有为这些孩子设置绝对大小(每个孩子都有size_hint == [1, 1]
)。
另外,ScrollView
如果我没记错的话,期望ScrollView的大小(以便滚动)。
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())
从子项中删除size_hint
和size
,然后在那里too much iteration
。