当我单击构建器的按钮时,如何从文本字段传递信息?

Posted

技术标签:

【中文标题】当我单击构建器的按钮时,如何从文本字段传递信息?【英文标题】:How can I pass information from a text field when I click a button with the builder? 【发布时间】:2021-04-18 21:05:05 【问题描述】:

我是使用 kivymd 的新手,并试图创建一个简单的应用程序,只是为了好玩。我正在尝试创建一个注册屏幕,但是当我尝试将信息发送到控制台时,它返回一个错误(kivy.properties.ObservableDict.getattr AttributeError: 'super' object has no attribute 'getattr') 我实际上不明白它的意思。

.PY

'''

from kivymd.app import MDApp
from kivy.lang.builder import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivymd.uix.button import MDRoundFlatButton
from screen_helper import screen_helper
from kivy.core.window import Window

Window.size = (300, 500)

class MenuScreen(Screen):
    pass

class LoginScreen(Screen):
    pass        

class RegistrarScreen(Screen):
    pass

sm = ScreenManager()
sm.add_widget(MenuScreen(name='menu'))
sm.add_widget(LoginScreen(name='login'))
sm.add_widget(RegistrarScreen(name='registrar'))

class MainApp(MDApp):
    def build(self):
        self.theme_cls.primary_palette = 'Gray'
        screen = Builder.load_string(screen_helper) 
        return screen

    def show_data(self):
        print(self.root.ids.user.text)
    
        
MainApp().run()

'''

.KV

'''

screen_helper = """

ScreenManager:
    RegistrarScreen:


<RegistrarScreen>:
    name: "register"
    MDTextField:
        id: user
        hint_text: 'Enter your user'
        pos_hint: 'center_x':0.5,'center_y': 0.8
        size_hint_x: None 
        width: 250  

    MDRoundFlatButton:
        id: register_btn
        text: "Registrarse"
        text_color: 0, 0, 0, 1
        line_color: 0, 0, 0, 1
        pos_hint: 'center_x':0.5,'center_y': 0.1
        width: 500
        on_press: app.show_data()
"""

'''

【问题讨论】:

【参考方案1】:

问题是您的show_data() 方法正在尝试访问self.root.ids.user,但id 不在self.root 小部件(即ScreenManager)中。尝试将该方法更改为:

def show_data(self):
    print(self.root.get_screen('register').ids.user.text)

【讨论】:

正如你所说,这就是问题所在。我只是改变了它并解决了我的问题。谢谢。

以上是关于当我单击构建器的按钮时,如何从文本字段传递信息?的主要内容,如果未能解决你的问题,请参考以下文章

为啥当我单击目标 c 中的按钮时未从 tableViewCell 获取文本字段数据?

SwiftUI - 在按钮单击时添加一行多个文本字段/视图

获取表格视图中按钮单击的文本字段值

如何从另一个视图swiftui中传递字段文本值

如何在单击按钮时获取表格视图单元格中文本字段的值?

当用户以编程方式单击swift ios中的删除按钮时,如何将光标从一个文本字段自动移动到另一个文本字段?