簡體   English   中英

如何在kivymd中從for循環獲取用戶輸入的數據到python文件

[英]how to get data of user input from a for loop to python file in kivymd

我正在制作一個應用程序來乘以 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 個文本字段輸入,以便我可以在那里執行操作。

存儲對文本字段的引用,稍后訪問它們以執行您想要的操作。

我會刪除您的on_parent ,用您自己的類MyGridLayout(GridLayout):替換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]

當然,這只是一個基本的例子,實際上你會想要錯誤檢查等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM