gpt4 book ai didi

python - 嵌套在 BoxLayout 中的 ScreenManager 不可见

转载 作者:太空宇宙 更新时间:2023-11-04 03:37:07 25 4
gpt4 key购买 nike

我正在尝试使用 Kivy 并尝试将 ScreenManager 实例嵌套在 BoxLayout 中。我遇到的问题是,当 ScreenManager 是 BoxLayout 的子部件时,ScreenManager 及其屏幕不显示。

此代码显示黑屏。

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.screenmanager import Screen, ScreenManager


class MenuScreen(Screen):

def __init__(self, **kwargs):
super(Screen, self).__init__(**kwargs)
self.add_widget(Label(text="Some text."))

screen_manager = ScreenManager()
screen_manager.add_widget(MenuScreen(name="menu"))


class Container(BoxLayout):

def __init__(self, **kwargs):
super(BoxLayout, self).__init__(**kwargs)
self.add_widget(screen_manager)


class NestedScreenManagerApp(App):

def build(self):
"""
:return: a BoxLayout with the screen manager nested inside it
"""
return Container()


if __name__ == "__main__":
NestedScreenManagerApp().run()

另一方面,此代码(直接返回 ScreenManager 作为根小部件)确实有效并且 MenuScreen 及其标签可见。将 ScreenManager 作为根小部件返回正是 the official screen manager example app

from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.screenmanager import Screen, ScreenManager


class MenuScreen(Screen):

def __init__(self, **kwargs):
super(Screen, self).__init__(**kwargs)
self.add_widget(Label(text="Some text."))

screen_manager = ScreenManager()
screen_manager.add_widget(MenuScreen(name="menu"))


class RootScreenManagerApp(App):

def build(self):
"""
:return: the screen manager directly
"""
return screen_manager


if __name__ == "__main__":
RootScreenManagerApp().run()

当 ScreenManager 和它的 Screen 是我的 Container(BoxLayout) 的子部件时,我怎样才能让它可见?我想我错过了一些非常简单的东西。

我在 Python 2.7.9 上使用 Kivy 1.8.0,在 Debian Jessie 上运行。

最佳答案

我找到了解决方案;问题是我在 Container.__init__ 方法中调用了 super(BoxLayout, self) 而不是 super(Container, self) 。一旦我更改了它,ScreenManager 及其屏幕就可以从容器中看到。

关于python - 嵌套在 BoxLayout 中的 ScreenManager 不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28531276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com