python - 如果我在另一个屏幕中,我如何获取屏幕的 MDTextField(或数据“登录”)的文本。(基维/基维MD/Python)
问题描述
我是使用类和 kivy/kivyMD 的新手,我遇到了麻烦,如果我从类定义工作,我想获取属于 AScreen 的 MDTextFied(或我的查询的数据“登录”)的文本屏幕?
我的最小代码是ScreenManager File:
<AScreen>:
name:'ascreen'
MDBoxLayout:
orientation: 'vertical'
MDTextField:
id: user
hint_text: 'User'
MDRectangleFlatButton:
text:'Login'
on_release: root.login_button()
<BScreen>:
name:'bscreen'
MDRectangleFlatButton:
text:'Registrar Equipo'
on_release: root.show_login_data()
我的屏幕的类文件是:
class AScreen(Screen):
def login_button(self):
...
login = #User DB info
"""Here i do a query to the DB with the text of my MDTextField on AScreen
i use self.ids.user.text to get the text of the AScreen MDTextField
if the user exist in the DB i save the user's data on a variable named "login" """
class BScreen(Screen):
def show_login_data(self):
print()
现在我只是想从 AScreen.ids.user.text 打印文本,或者也获取登录变量,但我没有得到其中任何一个。
我的主要文件是:
sm = ScreenManager()
sm.add_widget(screensfile.AScreen(name='ascreen'))
sm.add_widget(screensfile.BScreen(name='bscreen'))
class MainApp(MDApp):
def build(self):
self.screen = Builder.load_string(screen_helper)
return self.screen
MainApp().run()
我尝试了以下方法(我为我可怕的新手错误道歉): print(AScreen.login_button().login) print(Acreen.ids.user.text)
我知道这里有类似的情况,但它对我的screens.py文件没有帮助: Kivy - Use text from TextInput of a screen in another screen in another screen in .py file
我知道最可能的事情是我对类的工作有一个不好的解释,但是屏幕在 kivy 中的工作方式(屏幕寻找同名类的定义)我不知道如何去做吧。有人可以帮我吗?
解决方案
假设您screen_helper
将 a 定义为带有和作为其子ScreenManager
级的 Apps 根小部件。在这种情况下,您可以将in引用为:AScreen
BScreen
MDTextField
AScreen
App.get_running_app().root.get_screen('ascreen').ids.user
返回正在运行的App.get_running_app()
实例App
。引用根root
小部件(我假设它是 a ScreenManager
)。的get_screen()
方法ScreenManager
返回 的实例AScreen
,并ids.user
获得对 的引用MDTextField
。尝试使用类访问 idAScreen
将不起作用,因为 id 是在AScreen
.
在不相关的说明中,如果您的build()
方法返回 的结果Builder.load_string
,则以下行:
sm = ScreenManager()
sm.add_widget(screensfile.AScreen(name='ascreen'))
sm.add_widget(screensfile.BScreen(name='bscreen'))
正在构建一个未使用的sm
,并且可以删除。
推荐阅读
- algorithm - 在克鲁斯卡尔算法上使用贪婪策略时要解决的子问题是什么?
- javascript - 我需要定位一些信息的 HTML 问题。向左,但我不能总是将它定位到中心
- python-3.x - 验证后仅打印最后一个错误输入而不是正确输入
- c++ - 使用 Z3 证明分辨率定理
- security - Nifi 基本身份验证实现
- amazon-web-services - AWS RDS:致命:用户“postgres”的密码身份验证失败
- r - 根据R中的列和值替换矩阵中的项目
- elasticsearch - Fluentd 无法连接到 Elasticsearch - [警告]:#0 [elasticsearch] 无法连接 Elasticsearch 或获取版本。假设 Elasticsearch 5
- javascript - Express res.json 创建我没有创建的 ID 属性
- css - 如何在 react-bootstrap 中居中对齐 Container 组件的内容?