如何从for循环中获取用户输入的数据到kivymd中的python文件
Posted
技术标签:
【中文标题】如何从for循环中获取用户输入的数据到kivymd中的python文件【英文标题】:how to get data of user input from a for loop to python file in kivymd 【发布时间】:2020-12-17 22:32:56 【问题描述】:我正在制作一个将 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 个文本字段输入,以便我可以在那里执行操作。
【问题讨论】:
【参考方案1】:存储对您的文本字段的引用,并在以后访问它们以执行您想要的操作。
我会删除您的on_parent
,将GridLayout
替换为您自己的课程MyGridLayout(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)]
然后当您想要访问它们时,您可以遍历例如entered_numbers = [int(field.text) for field in self.text_field]
.
当然,这只是一个基本示例,实际上您需要进行错误检查等。
【讨论】:
以上是关于如何从for循环中获取用户输入的数据到kivymd中的python文件的主要内容,如果未能解决你的问题,请参考以下文章
Kivymd:如何将“MDTextfield”更改为“int”
在 Shiny 应用程序中,如何暂停 for 循环以获取用户输入,然后在单击按钮后继续?