0

我正在制作一个将 2 矩阵相乘的应用程序。为此,我创建了用户界面,但无法弄清楚如何在我的 python 文件中获取用户输入,所以我可以在那里进行操作。

这是我的 kivy 文件

#: import MDTextField kivymd.uix.textfield.MDTextField
<MyApp>:    
    NavigationLayout:
        ScreenManager:
            Screen:
                name: "screen1"
                GridLayout:
                    cols: 4
                    padding: 30
                    spacing: 20
                    size: root.width * 0.4, root.height * 0.8
                    row_force_default: True
                    row_default_height: 30
                    pos_hint: {'center_x': 0.5,'center_y':0.55}
                    size_hint: (None, None)
                    size: self.minimum_size
                    top: self.height
                    on_parent:
                        for i in range(16): self.add_widget(MDTextField(hint_text= 'sc', helper_text= 'hello', size_hint_x= None, width = 40))

                MDRectangleFlatButton:
                    text: 'back'
                    pos_hint: {'center_x': 0.5, 'center_y': 0.4}
                    on_release:
                        app.find_multiply()

因为我的 MDTextField 在 for 循环内,所以我不能在那里使用 id,因为我将获得所有 16 个具有相同 id 的文本字段。如何在我的 python 文件中的 app.find_multiply 函数中获取所有 16 个文本字段输入,以便我可以在那里执行操作。

4

1 回答 1

0

存储对您的文本字段的引用,并在以后访问它们以执行您想要的操作。

我会删除你的,用你自己的 classon_parent替换,然后让那个 class 做:GridLayoutMyGridLayout(GridLayout):

def __init__(self, **kwargs):
    super().__init__(**kwargs)
    self.text_fields = [MdTextField(hint_text= 'sc', helper_text= 'hello', size_hint_x= None, width = 40))] for _ in range(16)]

然后稍后当您想要访问它们时,您可以遍历 eg entered_numbers = [int(field.text) for field in self.text_field]

当然,这只是一个基本示例,实际上您需要进行错误检查等。

于 2020-08-30T12:36:11.740 回答