【发布时间】:2016-08-29 15:43:41
【问题描述】:
最近我在使用 Kivy 的 Screenmanager 时遇到了一些问题。从Screen 类访问管理器时,我无法使用管理器的switch_to 方法。在Screen 类中:self.manager.switch_to 给出错误:AttributeError: 'NoneType' object has no attribute 'switch_to'。我有点绝望。下面是产生错误的简单应用程序。
import kivy
kivy.require("1.9.1")
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.screenmanager import ScreenManager, Screen
screen1 = True
class Screen1(Screen):
def __init__(self, **kw):
super(Screen1, self).__init__(**kw)
self.add_widget(Label(text="Screen1"))
class Screen2(Screen):
def __init__(self, **kw):
super(Screen2, self).__init__(**kw)
self.add_widget(Label(text="Screen2"))
class BlackMenu(Screen):
def __init__(self, **kw):
super(BlackMenu, self).__init__(**kw)
if screen1:
self.manager.switch_to(Screen1())
class MyApp(App):
def build(self):
mymanager = ScreenManager()
mymanager.switch_to(BlackMenu(name="black"))
return mymanager
if __name__ == "__main__":
MyApp().run()
【问题讨论】:
-
我认为问题出在 BlackMenu 上,因为在构建过程中实例管理器属性为 None。