首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用屏幕管理器在屏幕之间切换

使用屏幕管理器在屏幕之间切换
EN

Stack Overflow用户
提问于 2017-11-28 04:31:52
回答 1查看 728关注 0票数 0

我正试着按下按钮后进行屏幕切换。但是在屏幕切换之前,我想验证用户名和引脚。我正在使用python和一个kv文件。我是新来的,所以任何帮助都将不胜感激。

代码语言:javascript
复制
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档案:

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-28 16:56:33

解决方案是使用ScreenManager、id、root.manager等,如下面的示例所示。

示例

main.py

代码语言:javascript
复制
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

代码语言:javascript
复制
#: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"

输出

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47524060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档