2017-03-08 17 views
3

ポップアップに長いテキストを表示しようとしています。ポップアップの高さがテキストの長さに応じて変化するのが理想的です。しかし、それは私がこのコードKivyラベルとポップアップ+ロングテキスト

boxl = uix.boxlayout.BoxLayout(orientation="vertical") 
    boxl2 = uix.boxlayout.BoxLayout(orientation="horizontal") 
    pop = Popup(title="Title", content=boxl, size_hint=(0.75,0.8)) 
    text = "Really long text" 

    document = uix.label.Label(text=text,markup=True, valign='top') 

    button = uix.button.Button(text='back', size_hint_y=None, height=40) 
    button2 = uix.button.Button(text="Button Title", size_hint_y=None, height=40) 
    button.bind(on_press=(lambda x:pop.dismiss())) 
    button2.bind(on_press=(lambda x,data=data:(self.set_vorteil(data),pop.dismiss()))) 
    boxl.add_widget(document) 

    boxl2.add_widget(button) 
    boxl2.add_widget(button2) 
    boxl.add_widget(boxl2) 
    document.bind(size=document.setter('text_size')) 
    pop.open() 

これで興味深いのは、私のテキストは、巨大な空き領域が前にあったとしても、切断されていることであるとのサイズを変更せずにこれを実装しようとした私の唯一の問題ではありませんボタン。これを修正したり、それを正しくするにはどうしたらいいですか?私はKivyのLabelsの使い方と混同しています。

+0

どのようにカットオフを意味しますか?同様のコードを使用して、私は[this](http://imgur.com/a/HMgXX) – ODiogoSilva

+0

@ODiogoSilvaも短く、長いテキストを使用します。 – KeyWeeUsr

+0

この例で問題を引き起こす文字列サイズを指定できますか? – ODiogoSilva

答えて

3

あなたはLabelButtonウィジェットの間ではあまり空き容量を取得する理由は2つのBoxLayoutウィジェット(boxlboxl2は)実際に(あなたがそれに気づかない場合でも)の半分のスペースを分割していることです。あなたはLabelはすべてそのスペースを持っているしたい場合は、boxl2ウィジェットの高さを設定する必要があります:

boxl2 = BoxLayout(orientation="horizontal", size_hint_y=None, height=40) 

誰場合はこれがButtonウィジェット

+0

お返事ありがとうございます! – Bohr

2
document.bind(size=document.setter('text_size')) 

は、テキスト領域を特定のサイズ(ウィジェット自体のサイズ)に制限します。それはあなたがやったことを、事実を除いてかなりうまく機能:

boxl.add_widget(boxl2) 

良いことですが、それゆえ、size_hint=(None, None)とBoxLayoutのための特定のサイズを設定するのを忘れている:

enter image description here

一方、Button自身のためにそれを設定すると、レイアウト自体が変更されたと思うようになりました。 (そうではありません)。 BoxLayout(size_hint=(None, None), size=<desired size>)

また、この方法は、ユーザーを制限するため実際にはうまくありません。モバイルレイアウトが小さすぎる場合

from kivy.lang import Builder 
from kivy.base import runTouchApp 
runTouchApp(Builder.load_string(''' 
ScrollView: 
    Label: 
     size_hint_y: None 
     text_size: (self.width, None) 
     text: 'lorem ipsum dolor ' * 1000 
     height: self.texture_size[1] 
''')) 

またはそれが効率的になるだろうRecycleView、でその実施のための:私はむしろ、スクロールラベルのために行くと思います。

0

と同じ高さにboxl2ウィジェットを設定し、ここでは、興味を持っていることで、テキストに応じて成長するポップアップの私の実装です:

<[email protected]> 
height: content_id.height + 50 
width: '400dp' 
size_hint: (None, None) 

BoxLayout: 
    orientation: 'vertical' 
    id: content_id 
    size_hint: (None, None) 
    height: self.minimum_height + 25 
    width: root.width - 25 

    Label: 
     size_hint_y: None 
     height: self.texture_size[1] 
     text_size: (self.width, None) 
     text: 'A' * 400 
     padding: (0, 10) 

    Button: 
     size_hint_y: None 
     height: '40dp' 
     text: 'ok' 
  • は、それが地平線の成長方法を参照してください。 (text: 'A' * 400
  • ポップアップの幅を変更すると、ポップアップの幅を変更できます。
関連する問題