无法在Kivy Label中对齐文本

时间:2017-06-15 23:17:26

标签: python kivy

我想从列表条目的文件(此处简化)中填充列表,然后能够滚动列表。各个列表条目的结构如下:

-----------------------                   |
|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"

我做错了什么?

1 个答案:

答案 0 :(得分:0)

在实例化之后,您需要将标签的text_size设置为它的大小。

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

此外,您发布的代码对我不起作用且格式不正确。看起来你在匆忙中发布代码时可能会犯一些错误。