当我使用构建器单击按钮时,如何传递文本字段中的信息?
How can I pass information from a text field when I click a button with the builder?
我是 kivymd 的新手,正在尝试创建一个简单的应用程序,只是为了好玩。我正在尝试创建一个注册屏幕,但是当我尝试将信息发送到控制台时,它 returns 给我一个错误 (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()
"""
'''
问题是您的 show_data()
方法正在尝试访问 self.root.ids.user
,但是 id
不在 self.root
小部件(即 ScreenManager
).尝试将该方法更改为:
def show_data(self):
print(self.root.get_screen('register').ids.user.text)
我是 kivymd 的新手,正在尝试创建一个简单的应用程序,只是为了好玩。我正在尝试创建一个注册屏幕,但是当我尝试将信息发送到控制台时,它 returns 给我一个错误 (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()
"""
'''
问题是您的 show_data()
方法正在尝试访问 self.root.ids.user
,但是 id
不在 self.root
小部件(即 ScreenManager
).尝试将该方法更改为:
def show_data(self):
print(self.root.get_screen('register').ids.user.text)