繁体   English   中英

我在尝试使用 kivy 切换屏幕时遇到问题

[英]I'm having a problem while trying to switch screens with kivy

具体来说,几乎一切正常,只是当我尝试使用 app.root.current 更改窗口时: * 页面名称 * 没有任何反应,程序不会崩溃或显示任何警告,它就像我从来没有过一样写了那行。

我尝试删除 kivy 文件中第 41 行的“if”,但没有任何区别。

蟒蛇代码:

import kivy 
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput
from kivy.uix.widget import Widget
from kivy.properties import ObjectProperty
from kivy.uix.floatlayout import FloatLayout
from kivy.graphics import Color
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen

import validity
from validity import Validity


""" class for the login window """

class LoginWindow(Screen, FloatLayout, Widget):
    email = ObjectProperty(None)
    password = ObjectProperty(None)

    def check_input(self):
        valid_email = False
        valid_password = False

        """ uses custom made funcition to check email and password """

        if validity.Validity.checkMail(self.email.text):
            print("Valid Email")
            valid_email = True
        else:
            print("Invalid Email")

        if validity.Validity.checkPassword(self.password.text):
            print("Valid Password")
            valid_password = True
        else:
            print("Invalid Password")

            """ return True or False as str"""
        return str(valid_email and valid_password)


class MainWindow(Screen, FloatLayout):
    pass

class WindowManager(ScreenManager, FloatLayout):
    pass

class LoginInfoPage(Screen, FloatLayout):
    pass

build = Builder.load_file("build.kv")

class runApp(App):
    def build(self):
        return build

if __name__ == "__main__":
    runApp().run()

基维文件:

WindowManager:
    LoginWindow:
    MainWindow:
    LoginInfoPage:

<LoginWindow>:
    name: "login_page"

    email: email_id
    password: password_id

    Label: 
        text: "Email: "
        pos_hint: {"x": 0 , "top": 1}
        size_hint: 0.2, 0.1

    TextInput:
        id: email_id
        multiline:False
        pos_hint: {"x": 0.2, "top": 1}
        size_hint: 0.3, 0.1

    Label:
        text: "Password: "
        pos_hint: {"x": 0, "top": 0.9}
        size_hint: 0.2, 0.1


    TextInput:
        id: password_id
        multiline:False
        pos_hint: {"x": 0.2, "top": 0.9}
        size_hint: 0.3, 0.1

    Button:
        text: "Login"
        font_size: 50
        pos_hint: {"x": 0.5, "top": 1}
        size_hint: 0.3, 0.2
        on_release: 
            app.root.current: "main_page" if  root.check_input() == 'True' else "login_page"

<MainWindow>:
    name: "main_page"

    Button:
        text: "Welcome to the main window!" 
        on_release:
            app.root.current: "login_page"

<LoginInfoPage>:
    name: "login_info_page"

感谢任何试图提供帮助的人

尝试

    on_release: 
        app.root.current = "main_page" if  root.check_input() else "login_page"

可能需要更改check_input()以返回

        """ return True or False """
    return valid_email and valid_password

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM