2014-11-03 36 views
1

因此,我正在研究一個基於kivy的應用程序,我希望能夠滾動瀏覽數千行文字。我開始嘗試使用基本的滾動視圖,但是當您擁有大量文本時,這根本不起作用(據我所知)。事實上,當我創建一個非常大的標籤時,它往往不會呈現。Kivy滾動瀏覽數千行文字

然後,我試着創建自己的窗口小部件,通過基本製作一個顯示我想要顯示的整個文本的子集的標籤來滾動文本,然後遍歷線條,這樣就像滾動終奌站。我現在面臨的問題是,我無法弄清楚如何讓標籤在相同的地方保持相同的尺寸。我設置了尺寸和size_hint,但都沒有工作。 text_size似乎是一種工作,但我遇到了一個問題,即文本在水平方向上跳躍,具體取決於行長度,有時似乎標籤居中於我設置的x位置,而不是將該位置放在左側邊緣。我已經明確嘗試了左對齊文本,但沒有效果。我正在嘗試在浮動佈局中執行此操作。

如果有人會解釋我如何通過kivy瀏覽大量文本,我會非常感激。由於

編輯:添加一些代碼

Label: 
    id: scroll_label_text 
    font_size: 18 
    text: "log here" 
    x:800 

這是因爲我用它來顯示我想通過

log_text = ObjectProperty(Label) 

scroll_down = ObjectProperty(Button) 
scroll_up = ObjectProperty(Button) 

scrollpos = 0 

def __init__(self, log, **kwargs): 
    super(Reader,self).__init__() 
    self.scroll_down.bind(on_press=self.scroll) 
    self.scroll_up.bind(on_press=self.scroll) 
    self.log_text.y = self.scroll_down.height*2 
    self.log_text.text_size = (None,300) 

    self.log_text.shorten = True 

滾動文本標籤的KV文件,所以我有滾動按鈕通過簡單地更改標籤中顯示的文本切片來上下。

我遇到的問題是我不能將標籤留在屏幕的左側。它看起來圍繞着'x'設置(數字並不完全表明這一點),所以取決於線條的長度,紋理的大小以及位置的變化。

+0

你能否提供一些代碼來澄清這種情況? – Totem 2014-11-03 12:07:06

+0

如何嘗試將只讀設置爲True的TextInput?我不知道這是否會奏效......也許值得一試。另外,如果你是的話,你可能不應該同時使用size和size_hint。如果您正在使用大小,則將size_hint設置爲(None,None),否則可能會影響大小。 – Totem 2014-11-03 12:09:57

+0

好吧,我添加了一些更多的信息和代碼。讓我知道我是否可以做其他事情。我沒有在同一個項目上使用size和size_hint,但我已經嘗試了兩種。如果您認爲textinput會更好,我會嘗試(稍後),但是我很確定我只是無法掌握小部件定位在kivy中的工作方式,這不會受到文本輸入的幫助。 – ConnorM 2014-11-03 15:48:11

回答

0
<StackLayout>: 
    id:rootpane 
    textpane:textpane 
    scroll:scroll 
    direction:'tb-lr' 
    size_hint:(None, None) 
    size:(480, 854) 
    pos:self.parent.pos 
    ScrollView: 
     id:scroll 
     size_hint:(None, None) 
     size:rootpane.size 
     #do_scroll_x:False 
     #do_scroll_y:False 
     bar_color:(0, 0, 0, 0.4) 
     bar_inactiv_color:(0, 0, 0.7, 0.4) 
     bar_margin:2 
     bar_width:8 
     #on_scroll_x:textpane.focus = True 
     #on_scroll_y:textpane.focus = True 
     TextInput: 
      size_hint:(None, None) 
      id:textpane 
      text:'' 
      on_text:self.y = self.minimum_height 

這種運作良好,除了的textinput調整大小應該如果設置text屬性到一個文件的內容來手工處理。最後一行顯示如何通過on_text屬性事件。