2015-07-12 152 views
2

我現在正在熟悉kivy。 我認爲它有很大的潛力,但我確實發現「普通python」和kv-language之間的關係有點混亂,這使得很難理解在哪裏做項目。目前看來,在使用python vs kv-l時,行爲(幕後發生的事情)並不是一一對應的,總的來說,我認爲這對於可用性/生產力而言非常高。kivy scrollview with boxlayout

我已經使用了「速成課程」,這是一個很好的開始得到kivy的第一印象。 無論如何,在學習的過程中,我只是想看看是否可以製作一個盒式視圖可滾動 - 事實證明,我不能。

,使此代碼的工作現在需要的,即擴大了標籤的「紋理大小」,並同時具有調節到一個滾動型?

如果BoxLayout的有size_hint_y:無,標籤不擴展到文本,但滾動視圖可以在行動使該窗口非常小的時候可以看到。

如果BoxLayout的有size_hint_y:1,標籤擴大,但apparantly的BoxLayout的高度並沒有改變,即滾動視圖窗口似乎是相同的,與size_hint_y:無

如果我只是把一個高度大,滾動視圖涵蓋這一點,但我希望,它可能獲得連接到它的內容的BoxLayout的動態高度。

我玩過高度,size_hints等,我還沒有找到一個組合工作,有時會得到警告,由於內部重繪循環代碼需要重新編制嗎?

我在想什麼/沒有理解?

代碼如下。

from kivy.base import runTouchApp 
from kivy.lang import Builder 
from kivy.uix.scrollview import ScrollView 

Builder.load_string(""" 

<ScrollableLabel>: 
    BoxLayout: 
     orientation: 'vertical' 
     # size_hint_y: 1 
     size_hint_y: None 
     height: 400 #self.size[1] 
     canvas: 
      Color: 
       rgba: (1, 0, 0, .5) # DarkOliveGreen 
      Rectangle: 
       size: self.size 
       pos: self.pos 
     Label: 
      id: bust 
      text: 'a string that is long ' * 10 
      font_size: 50 
      text_size: self.width, None 
      size_hint_y: None 
      height: self.texture_size[1] 
      canvas: 
       Color: 
        rgba: (0, 1, 0, .5) # DarkOliveGreen 
       Rectangle: 
        size: self.size 
        pos: self.pos 
     Label: 
      text: '2 strings that are long ' * 10 
      text_size: self.width, None 
      size_hint_y: None 
      height: self.texture_size[1] 
     Button: 
      text: 'just testing' 



""") 

class ScrollableLabel(ScrollView): 
    pass 

runTouchApp(ScrollableLabel()) 

回答

4

BoxLayout的設計是爲了讓自己的孩子充滿自己。對於動態調整你想有一個更好的佈局是網格佈局,其中有可以綁定到了自動調整大小一個minimum_height。

<ScrollableLabel>: 
    GridLayout: 
     cols: 1 
     size_hint_y: None 
     height: self.minimum_height 
     canvas: 
      Color: 
       rgba: (1, 0, 0, .5) # DarkOliveGreen 
      Rectangle: 
       size: self.size 
       pos: self.pos 
     Label: 
      id: bust 
      text: 'a string that is long ' * 10 
      font_size: 50 
      text_size: self.width, None 
      size_hint_y: None 
      height: self.texture_size[1] 
      canvas: 
       Color: 
        rgba: (0, 1, 0, .5) # DarkOliveGreen 
       Rectangle: 
        size: self.size 
        pos: self.pos 
     Label: 
      text: '2 strings that are long ' * 10 
      text_size: self.width, None 
      size_hint_y: None 
      height: self.texture_size[1] 
     Button: 
      text: 'just testing' 
""") 
+0

由於按預期工作,我不會想到我自己。 – ahed87