首页 > 解决方案 > 在 Kivy 中更改 RecycleView 生成的按钮的文本

问题描述

我对 Kivy 不是很有经验,并且一直在尝试阅读文档,但我一直卡住。

我有一个列表 ["1", "2", "3", "4", "5"],我想用它来生成按钮并使用 RecycleView 显示它们。由于美学原因,我不想显示这些值,而是想在按钮上简单地显示“一”、“二”、“三”、“四”、“五”。但是,我需要 ["1", "2", "3", "4", "5"] 仍然使用,因为我希望稍后在单击生成的按钮时引用这些值。

我尝试在 ListResultsButton 类下添加 text: "One" 以使用语法,但不知何故它仍然显示列表中的值。

如果有人可以帮助我在生成的按钮上显示替代文本的方法,我将不胜感激,如果我可以在从第一个列表生成按钮的同时在按钮上显示第二个列表中的文本,那就更好了。

我已经包含了一个图表,以更好地可视化我的问题。 显示问题的图表

Python代码和kv代码:

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty

test_list = ["1", "2", "3", "4", "5"]

class Test2Root(BoxLayout):

    show_list_input = ObjectProperty()

    def show_list(self):
        #update data in recycleview
        self.show_list_input.data = [{'text': str(x)} for x in test_list]

class Test2App(App):
    pass

if __name__ == "__main__":
    Test2App().run()
#kv code
Test2Root:

<Test2Root>:
    show_list_input: show_list_input_ID
    orientation: "vertical"

    Button:
        text: "Press Me"
        on_press: root.show_list()

    RecycleView:
        id: show_list_input_ID
        viewclass: 'ListResultsButton'
        data: []

        RecycleBoxLayout:
            orientation: 'vertical'
            default_size: None, dp(25)
            default_size_hint: 1, None
            size_hint_y: None
            height: self.minimum_height

<ListResultsButton@Button>
    text: "One"

我真的很感激任何帮助。谢谢!

标签: pythonkivy

解决方案


我没有使用 Kivy 的经验。但是,查看代码,我相信以下内容会起作用:

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty

test_list = ["1", "2", "3", "4", "5"]
# Add text in an array
btns_text = ["One", "Two", "Three", "Four", "Five"]

class Test2Root(BoxLayout):

    show_list_input = ObjectProperty()

    def show_list(self):
        #update data in recycleview
        # Change it like this
        self.show_list_input.data = [{'text': btns_text[x]} for x in range(len(test_list))]

class Test2App(App):
    pass

if __name__ == "__main__":
    Test2App().run()

推荐阅读