首页 > 解决方案 > 如何在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

标签: python-3.xkivy

解决方案


您需要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)

推荐阅读