我正试着按下按钮后进行屏幕切换。但是在屏幕切换之前,我想验证用户名和引脚。我正在使用python和一个kv文件。我是新来的,所以任何帮助都将不胜感激。
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition
from kivy.uix.widget import Widget
from kivy.uix.gridlayout import GridLayout
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.stacklayout import StackLayout
from kivy.uix.scrollview import ScrollView
class MainScreen(Screen):
def login(self, uname_txt, pin_txt):
uname_txt = self.ids.uname_txt
uname_text = uname_txt
pin_txt= self.ids.pin_txt
pin_text = pin_txt
if uname_text == "test" and pin_text == "test":
self.parent.current = 'homepage'
else:
uname_text == ""
pin_text == ""Kv档案:
Button:
size_hint_y: None
height: 90
text: 'Logged users'
#on_release: app.root.current = ''
Button:
size_hint_y: None
height: 90
text:'create user'
on_press: app.root.login(uname_txt,pin_txt)发布于 2017-11-28 16:56:33
解决方案是使用ScreenManager、id、root.manager等,如下面的示例所示。
示例
main.py
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
class ScreenManagement(ScreenManager):
pass
class MainScreen(Screen):
def login(self, uname_txt, pin_txt):
if uname_txt == "test" and pin_txt == "test":
self.parent.current = 'homepage'
class HomePage(Screen):
pass
class TestApp(App):
title = "Login Screen"
def build(self):
return ScreenManagement()
if __name__ == "__main__":
TestApp().run()test.kv
#:kivy 1.10.0
<ScreenManagement>:
MainScreen:
id: main
HomePage:
<MainScreen>:
name: "main_screen"
GridLayout:
size_hint: (0.5, 0.5)
pos_hint: {"center_x": 0.5, "center_y": 0.6}
cols: 2
padding: 20
Label:
size_hint: (0.2, 0.2)
text: "User Name"
font_size: 30
text_size: self.size
valign: "middle"
TextInput:
id: username
size_hint: (0.2, 0.06)
cursor_blink: True
font_size: 20
multiline: False
Label:
size_hint: (0.2, 0.2)
text:"Pin:"
font_size: 30
text_size: self.size
valign: "middle"
TextInput:
id: pin
size_hint: (0.2, 0.06)
cursor_blink: True
font_size: 20
multiline: False
password: True
Button:
size_hint_y: None
height: 90
text: 'Logged users'
Button:
size_hint_y: None
height: 90
text:'Create user'
on_press: root.manager.ids.main.login(username.text, pin.text)
<HomePage>:
name: "homepage"
BoxLayout:
orientation: "vertical"
Label:
text: "Home Page"
Button:
text: "Go to main screen"
size_hint_y: 0.1
on_press: root.manager.current = "main_screen"输出



https://stackoverflow.com/questions/47524060
复制相似问题