首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >kivy没有名称为"main_screen“的屏幕

kivy没有名称为"main_screen“的屏幕
EN

Stack Overflow用户
提问于 2018-05-31 11:35:07
回答 2查看 2.5K关注 0票数 1

我在试用ScreenManager的时候,名字出了点问题。我的应用程序应该以HelloScreen启动,3秒后它会自动转换为MainScreen。

这些在我的main.py中:

代码语言:javascript
运行
复制
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.clock import Clock


class MainScreen(Screen):
    pass


class HelloScreen(Screen):
    pass


class MemoryManagementSystem(ScreenManager):
    def __init__(self, **kwargs):
        super(MemoryManagementSystem, self).__init__(**kwargs)
        Clock.schedule_once(self.transit_scene, 3)

    def transit_scene(self, *args):
        self.current = "main_screen"


class MemoryManagementSystemApp(App):
    def build(self):
        return MemoryManagementSystem()


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

这些都在我的kv文件中:

代码语言:javascript
运行
复制
#:import FadeTransition kivy.uix.screenmanager.FadeTransition

MemoryManagementSystem:
    transition: FadeTransition()
    HelloScreen:
        name: "hello_screen"
    MainScreen:
        name: "main_screen"

<HelloScreen>:
    BoxLayout:
        Label:
            text: "Project"
            font_size: 50

<MainScreen>:

如果我运行这些程序,屏幕完全是黑色的,没有显示任何标签,3秒后应用程序崩溃,我得到的结果是:

代码语言:javascript
运行
复制
File "C:\Users\98742\Anaconda3\lib\site-packages\kivy\uix\screenmanager.py", line 1037, in on_current
     screen = self.get_screen(value)
   File "C:\Users\98742\Anaconda3\lib\site-packages\kivy\uix\screenmanager.py", line 1063, in get_screen
     raise ScreenManagerException('No Screen with name "%s".' % name)
 kivy.uix.screenmanager.ScreenManagerException: No Screen with name "main_screen".

但我已经在.kv文件中添加了一个名为"main_screen“的屏幕...我就是不明白。

我读了其他问题,发现可以通过在main.py中添加屏幕来解决这个问题,如下所示:

代码语言:javascript
运行
复制
class MemoryManagementSystem(ScreenManager):
    def __init__(self, **kwargs):
        super(MemoryManagementSystem, self).__init__(**kwargs)
        self.add_widget(HelloScreen(name='hello_screen'))
        self.add_widget(MainScreen(name="main_screen"))
        Clock.schedule_once(self.transit_scene, 3)

    def transit_scene(self, *args):
        self.current = "main_screen"

它确实起作用了。但我只是不知道为什么我的版本不能工作?(它没有显示标签,它崩溃了)。这与初始化和.kv文件有什么关系吗?

谢谢你的解释。

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

https://stackoverflow.com/questions/50616240

复制
相关文章

相似问题

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