Kivy,ScreenManager在切换到上一个屏幕时说没有屏幕

时间:2019-06-08 05:25:10

标签: python kivy

现在,我已经在另一个没有问题的项目中使用了ScreenManager。但是令人惊讶的是,相同的设置在任何其他项目中均不起作用。简直无法弄清楚为什么我的屏幕只能切换到新屏幕(以前没有显示过),而不能切换到以前的任何屏幕。我正在发布一个简单的代码来显示这种现象。请告知我我严重失踪的内容。谢谢。

screenmanager_test.py

import kivy
kivy.require('1.11.0')
import os
os.environ['KIVY_GL_BACKEND'] = 'gl'
from kivy.app import App
from kivy.uix.popup import Popup
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.screenmanager import Screen, ScreenManager, FadeTransition
from kivy.clock import Clock

class MainScreen(Screen):
    def setName(self,*args):
        FirstPopup().open()

class SecondScreen(Screen):
    pass

class FirstPopup(Popup):
    pass

class MyScreenManager(ScreenManager):
    pass

class SmTestApp(App):
    def build(self):
        sm = MyScreenManager()
        sm = ScreenManager(transition=FadeTransition())
        sm.add_widget(MainScreen(name="main_scr"))
        sm.add_widget(SecondScreen(name="second_scr"))
        return sm

SmTestApp().run()

smtest.kv

#: kivy 1.11.0

<MainScreen>:
    name: 'main_scr'
    BoxLayout:
        orientation: 'vertical'
        padding: 100,100
        spacing: 50

        Label:
            text: 'Welcome to Main Screen'
            font_size: 35

        Button:
            text: 'Options'
            font_size: 15
            on_release: root.setName(*args)

        Button:
            text: 'Next Screen'
            font_size: 15
            on_release: app.root.current = 'second_scr'

<SecondScreen>:
    name: 'second_scr'
    BoxLayout:
        orientation:'vertical'
        padding:100,100
        spacing:50

        Label:
            text: 'This is your second screen'
            font_size: 35
        Button:
            text: 'Back'
            font_size: 25
            on_release: app.root.current = 'main_scr'

<FirstPopup>:
    title: 'Options Window'
    size_hint: None, None
    size: 400,370
    BoxLayout:
        orientation : 'vertical'
        Label:
            text : "Checkbox options listed here"
        Button:
            text: "OK"
            on_release: root.dismiss()


1 个答案:

答案 0 :(得分:0)

好的。这是我所发现的。我删除了FadeTransition效果,一切恢复正常。我检查了所有其他可用的过渡方法,发现在8,4过渡样式中,导致程序退出。导致此错误的影响是淡入淡出,擦除,掉落和上升。

如果这是由于其他一些参数设置错误引起的,我不知道。如果任何人都可以给出解释,那很好。如果没有,则如何确定原因。谢谢@约翰·安德森。