具体来说,几乎所有东西都可以正常工作,只是当我尝试使用app.root.current更改窗口时:*页面名称*没有任何反应,程序不会崩溃或显示任何警告,它只是像我一样从来没有写过那条线。
我尝试删除kivy文件中第41行的'if',但没有区别。
python代码:
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()
kivy文件:
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"
感谢任何尝试帮助的人
答案 0 :(得分:0)
尝试
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