Kivy, ScreenManager говорит, что нет экрана при переключении на предыдущий экран - PullRequest
0 голосов
/ 08 июня 2019

Сейчас я уже использую 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 голосов
/ 08 июня 2019

Хорошо.Вот что я нашел.Я удалил этот эффект FadeTransition и все пришло в норму.Я проверил все другие доступные методы перехода и обнаружил, что из 8, 4 стиля перехода вызывает выход из программы.Эффекты, которые вызывают эту ошибку: Fade, Wipe, FallOut и RiseIn.

Если это вызвано каким-то другим неправильно установленным параметром, я не знаю.Если кто-то может дать объяснение, то это было бы хорошо.Если нет, то каким образом была установлена ​​причина.Спасибо @Джон Андерсон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...