python-3.x - 如何在kivy代码中调用函数
问题描述
当我单击按钮:配置文件时,出现一个错误,我需要调用要按下的按钮的函数,该函数检查变量是否正确,并将人员发送到另一个窗口
我试图将函数放在 kivy 代码中,但它无法识别它,我不知道还能做什么我只想检查登录并更改页面,有人可以帮助我吗?
那是我的代码:
from kivymd.app import MDApp
from kivy.lang.builder import Builder
from kivy.uix.screenmanager import Screen, ScreenManager
txtuser = 'Root'
def verified_Login():
if txtuser == 'Root':
root.manager.current = 'profile'
else:
print("oi")
screen_helper = """
ScreenManager:
LoginScreen:
ProfileScreen:
<LoginScreen>:
name: 'login'
MDRectangleFlatButton:
text: 'Profile'
pos_hint: {'center_x':0.5,'center_y':0.5}
on_press: verified_Login()
<ProfileScreen>:
name: 'profile'
MDLabel:
text: 'Test'
halign: 'center'
MDRectangleFlatButton:
text: 'Back'
pos_hint: {'center_x':0.5,'center_y':0.2}
on_press: root.manager.current = 'login'
"""
class LoginScreen(Screen):
pass
class ProfileScreen(Screen):
pass
sm = ScreenManager()
sm.add_widget(LoginScreen(name='menu'))
sm.add_widget(ProfileScreen(name='profile'))
class DemoApp(MDApp):
def build(self):
screen = Builder.load_string(screen_helper)
return screen
DemoApp().run()
单击按钮时的错误:
line 57, in custom_callback
exec(__kvlang__.co_value, idmap)
File "<string>", line 12, in <module>
NameError: name 'verified_Login' is not defined
解决方案
您需要verified_Login()
在screen_helper
. 在该字符串的开头添加:
#:import verified_Login file_name.verified_Login
wherefile_name
是包含您的代码的文件的名称(不带.py
扩展名)。
您还需要修复您的verified_Login()
方法:
def verified_Login():
if txtuser == 'Root':
MDApp.get_running_app().root.current = 'profile'
else:
print("oi")
顺便说一句,以下几行:
sm = ScreenManager()
sm.add_widget(LoginScreen(name='menu'))
sm.add_widget(ProfileScreen(name='profile'))
正在构建您的未使用实例,App
并且可以删除。实际App
是在方法中内置的build()
:
screen = Builder.load_string(screen_helper)
推荐阅读
- python - 如何调试“您的 SQL 语法有错误”
- javascript - 在不同的函数中获取 div 的属性值 (REACT)
- c++ - 枚举类默认初始化
- html - 找不到如何消除顶部栏菜单上方的空白
- c++ - SFML SetFont 分段错误崩溃
- entity-framework - 如何在多线程应用程序中使用 DbContext
- django - Django Admin:ChangeList 视图中的一列中有多个可编辑条目
- typescript - 断言导入的 Typescript 正在使用 Jest 导出
- html - 我应该为图片库使用 WebP 图像格式吗?
- amazon-web-services - 如何签署 AWS 转录流请求