2017-06-15 10 views
0

リストのファイル(ここでは簡略化されています)からリストを作成し、そのリストをスクロールできます。個々のリストエントリは次のように構成されていますKivy Labelでテキストを揃えることができません

-----------------------     | 
|nm_lbl    |     | 
----------------------- |    | 
|amt_lbl | sym_lbl| } sub_sub_cont } sub_cont 
----------------------- |    | 

次のように私のアプローチは、次のとおりです。

from kivy.app import App 
from kivy.uix.label import Label 
from kivy.uix.gridlayout import GridLayout 
from kivy.uix.scrollview import ScrollView 

def populate_list(lst): 
    lst.clear_widgets() 
    inv_lst = [[123, "xyz", "abc"],[123, "xyz", "abc"],[123, "xyz", "abc"], 
    [123, "xyz", "abc"]] 

    for i in inv_lst: 
     sym_lbl = Label(text=str(i[0]), size_hint_y=None, height=15, halign="right") 
     nm_lbl = Label(text=str(i[1]), size_hint_y=None, height=15, halign="left") 
     amt_lbl = Label(text=str(i[2]), size_hint_y=None, height=15, halign="left") 

     sub_cont = GridLayout(cols=1, rows=2, size_hint_y=None) 
     sub_cont.add_widget(nm_lbl) 
     sub_sub_cont = GridLayout(cols=2, rows=1, size_hint_y=None) 
     sub_cont.add_widget(sub_sub_cont) 
     sub_sub_cont.add_widget(amt_lbl) 
     sub_sub_cont.add_widget(sym_lbl) 

     lst.add_widget(sub_cont) 

class MainApp(App): 
    def build(self): 
     return container 

some_list=GridLayout(cols=1, size_hint_y=0) 
populate_list(some_list) 

container = GridLayout(cols=1) 
scroller = ScrollView() 
container.add_widget(scroller) 
scroller.add_widget(some_list) 

app = MainApp() 
app.run() 

テキストのすべてが、それぞれのラベルの中央に配置されているという事実を除き、意図したとおり、このコードは動作しますが、私はhalign="right"またはhalign="left"をラベルに使用しています。

私は間違っていますか?

答えて

0

ラベルのtest_sizeは、インスタンス化された後にそのサイズに設定する必要があります。

sym_lbl = Label(text=str(i[0]), size_hint_y=None, height=15, halign="right") 
sym_lbl.text_size = sem_lbl.size 

また、あなたが投稿したコードは私にとってはうまくいかず、フォーマットが不適切です。おそらく、あなたのコードを急いで掲示する際にいくつかのエラーを出したようです。

+0

申し訳ありませんが、私はコードを編集しました。私はいくつかのインデントの問題がありました。そして、あなたの助けに感謝して、あなたのソリューションは完璧に機能しました! –

関連する問題