如何根据用户输入在kv文件中添加一定数量的小部件?

时间:2020-09-04 20:47:32

标签: python python-3.x kivy

我正在尝试创建一个程序,该程序根据用户的输入放置x数量的TextInput。我可以在py文件中执行此操作,但是如何在kv文件中执行此操作?稍后,我还需要能够引用这些TextInput

这是我到目前为止所拥有的:

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.lang import Builder
from kivy.properties import ObjectProperty
from kivy.uix.textinput import TextInput


class GetCount(Screen):

    count_input = ObjectProperty(None)

    def next(self):

        # Setup next screen
        text_inputs = [TextInput(multiline=False) for i in range(int(self.count_input.text))]

        for text_input in text_inputs:
            self.manager.ids.get_input.ids.grid.add_widget(text_input)

        # Switch to next screen
        self.manager.current = "get_input"


class GetInput(Screen):
    pass


kv_file = Builder.load_string("""
ScreenManager:

    GetCount:
        name: "get_count"
        id: get_count

    GetInput:
        name: "get_input"
        id: get_input


<GetCount>:
    
    count_input: count_input
    
    FloatLayout:
        
        Label:
            text: "count"
            size_hint: 1, 0.05
            pos_hint: {"top":0.9}

        TextInput:
            id: count_input 

            size_hint: 0.8, 0.05
            pos_hint: {"top":0.7, "x":0.1}
            multiline: False

        Button:
            text: "Next"
            on_release: root.next()
            size_hint: 0.8, 0.05
            pos_hint: {"top":0.5, "x":0.1}

<GetInput>:
    
    FloatLayout:

        GridLayout:
            id: grid

            cols: 1
    
""")


class MainApp(App):

    def build(self):
        return kv_file


if __name__ == "__main__":

    app = MainApp()
    app.run()

问题是,TextInput是通过py代码添加并创建的,我如何在KV中创建小部件,然后在py中添加吗?

0 个答案:

没有答案