Kivy多屏转换没有发生

时间:2016-10-10 13:03:57

标签: python kivy

我正在尝试在python中构建一个多屏幕kivy应用程序。没有编译时错误。 App编译成功。我在kivy中使用Screen Manager来实现多个屏幕。单击按钮时,没有发生过渡。请帮我执行转换。以下是我的代码的实际片段。

main.py文件

import kivy

from kivy.app import App
from kivy.app import ObjectProperty
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.screenmamager import ScreenManager, Screen

class LoginScreen(Screen):
    pass

class SignUpScreen(Screen):
    pass

class MainScreen(BoxLayout):
    pass

class MyScreenManager(ScreenManager):
    pass

class AuthenticationApp(App):
    def build(self):
        return MyScreenManager()

if __name__ == '__main__':
    AuthenticationApp().run()

Authentication.kv文件

<MyScreenManager>
    MainScreen:
    SecondScreen:

<SecondScreen>:
    name: 'Second'
    BoxLayout:
        orientation: 'vertical'

        canvas:
            Rectangle: 
                source: 'images/blue.png'
                pos: self.pos
                size: self.size

        BoxLayout:
            orientation: 'vertical'
            size_hint: 1,0.25

            Label:
                text: 'Vigilantdsjkadhakjshdakjsd Dollop'
                font_size: '15sp'
                size_hint: 1, 0.20 


            BoxLayout:
                orientation: 'horizontal'
                size_hint: 1, 0.1

                Button: 
                    id: login_button
                    text: 'Login'
                    font_size: '15sp'
                    on_release: app.root.current = 'Main'

                Button: 
                    id: login_button
                    text: 'Sign Up'
                    font_size: '15sp'

                Button: 
                    id: login_button
                    text: 'Recover'
                    font_size: '15sp'

                Button: 
                    id: login_button
                    text: 'Reset'
                    font_size: '15sp'

        BoxLayout:
            orientation: 'vertical'
            size_hint: 1,0.75

            Button: 
                text: 'Page'



<MainScreen>:
    name: 'Main'
    BoxLayout:
        orientation: 'vertical'

        canvas:
            Rectangle: 
                source: 'images/blue.png'
                pos: self.pos
                size: self.size

        BoxLayout:
            orientation: 'vertical'
            size_hint: 1,0.25

            Label:
                text: 'Vigilant Dollop'
                font_size: '15sp'
                size_hint: 1, 0.20 


            BoxLayout:
                orientation: 'horizontal'
                size_hint: 1, 0.1

                Button: 
                    id: login_button
                    text: 'Login'
                    font_size: '15sp'

                Button: 
                    id: login_button
                    text: 'Sign Up'
                    font_size: '15sp'
                    on_press: root.current = 'Second'

                Button: 
                    id: login_button
                    text: 'Recover'
                    font_size: '15sp'

                Button: 
                    id: login_button
                    text: 'Reset'
                    font_size: '15sp'

        BoxLayout:
            orientation: 'vertical'
            size_hint: 1,0.75

            Button: 
                text: 'Page'

1 个答案:

答案 0 :(得分:0)

将屏幕管理器声明为全局变量

import kivy

from kivy.app import App
from kivy.app import ObjectProperty
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.screenmamager import ScreenManager, Screen

screen_manager = ScreenManager()

class LoginScreen(Screen):
    pass

并在build方法中返回screen_manager实例。

class AuthenticationApp(App):
    def build(self):
        screen_manager.add_widget(LoginScreen(name='login'))
        return sceen_manager

然后在你的.kv文件中任何你想在屏幕之间切换的地方。试着举个例子:

Button: 
    id: login_button
    text: 'Login'
    font_size: '15sp'
    on_release: root.manager.current = 'login'