如何在.kv中更改ListView小部件的字体大小

时间:2016-05-10 15:51:09

标签: python listview kivy

我有一个简单的ListView小部件,我从我的python代码传递一个列表。 .kv看起来像这样:

    ListView:
        id: mylistview
        size_hint_y: 0.5
        font_size: self.height/5

但字体大小没有任何作用。我想我需要(以某种方式)将值传递给列表中的标签,但是使用了一种非常简单的方法,我无法弄清楚如何。另外,我发现的所有示例似乎都是Android特有的?!谁能告诉我最简单的方法呢?

编辑: 好的,基于建议的答案,以及大量的谷歌搜索,我想出了以下内容:

#:import ListAdapter kivy.adapters.listadapter.ListAdapter

<CustomLabel>:
    font_size: 30

<MyPopup>:
    GridLayout:
        ......
            ListView:
                size_hint: .8, .8
                adapter:
                    ListAdapter(data=["Item #{0}".format(i) for i in range(100)], cls = CustomLabel)

我看过的每个地方都暗示这是正确的方法,但这只是给我“NameError:name'CustomLabel'未定义”??

1 个答案:

答案 0 :(得分:2)

Afaik ListView没有font_size这样的东西,所以这基本上什么都没有。

要获得您想要的内容,您需要为小部件内的font_size设置Label,并且最简单的方法是制作自定义Label,例如:

#kv
<CustomLabel>:
    font_size: <pass value here>

#python
class CustomLabel(Label): pass

#python
class CustomLabel(Label):
    font_size = <value>

编辑: Hups,忘记了适配器的事情。所以基本上你最终会得到自定义Label,如果你不想转换参数,它对你来说会更简单。

simple_list_adapter = SimpleListAdapter(
data=["Item #{0}".format(i) for i in range(100)],
cls=CustomLabel)

list_view = ListView(adapter=simple_list_adapter)