2016-07-19 45 views
2

我處於一種困境之中。在使用Kivy的ScrollView Layout和(當前實驗)reStructuredText渲染器模塊時,我遇到了一個小問題。每當我跑我的代碼,我的終端修建垃圾我:現在使用Kivy在ScrollView中使用RST文檔

[CRITICAL] [Clock] Warning, too much iteration done before the next frame. Check your code, or increase the Clock.max_iteration attribute 

,應用程序似乎運行完全正常,直到你與滾動型佈局內將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") 

可能的問題是的rST文件基於ScrollView佈局的任何機會?

回答

0

有時候height: self.minimum_height和類似的東西就像在一隻腳上射擊自己。肯定會首先評論這些事情,因爲如果你不喜歡做某事,尺寸就是問題所在。

現在,爲什麼它是一個問題? StackLayoutminimum_height設置從minimum_size,這是設置我認爲某處here並且有一些初始值是不是零。

不要混淆,minimum_height確實在開始時默認爲零,但是它可能會在每個添加的小部件上重新計算。如果你在height: self.minimum_height之後加on_height: print(self.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_hintsize,你有你too much iteration那裏。