2016-07-19 18 views
2

私は苦境に瀕しています。 KivyのScrollView Layoutと(Current Experimental)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 

あなたはScrollViewレイアウト内部RSTドキュメントでページに到達するまで、アプリケーションは、完全に罰金実行しているようです。そのページはあらゆる種類の奇妙なことをします。メインのスクロールビューはゆっくりと下方向にスクロールし、ページを白くし、rSTドキュメントは奇妙に配置され、わずかに左に移動します。

ドキュメントを削除すると、画面とアプリケーションは正常に動作し、スムーズに動作します。誰かが、どのように私はこれを修正することができますか、ページが正しく動作するように任意のアイデアを持っていますか?

<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ドキュメントのようになります。ここで はKivy言語コードです(。私はRSTドキュメントがカルーセルにもともといたが、私はそれが問題だったかどうかを確認するためにカルーセルを取り出し言及しました)万が一、ScrollView Layoutに基づいていますか?

答えて

0

時にはheight: self.minimum_heightなどのものは、足で自分を撮影するようなものです。間違いなく何かをしなければサイジングが問題なので、まずこれらのことをコメントアウトしてみてください。

今、なぜそれが問題なのですか? StackLayoutminimum_heightminimum_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を持っています。

関連する問題