# 导入Kivy的App类,它是所有kivy应用的基类
from kivy.app import App
# kivy内置了丰富的控件widget  如 按钮button 复选框checkbox 标签label 输入框textinput 滚动容器scrollable container等
from kivy.uix.button import Button
# 引入BoxLayout 布局
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.screenmanager import ScreenManager, Screen



class IndexPage(BoxLayout):
    # 初始化
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        # 添加一个按钮
        self.join = Button(text="Hello World")
        # 将按钮添加到页面控件中
        self.add_widget(self.join)
# 从App类中继承了kivy应用组基本的方法,如创建窗口、设置窗口的大小和位置等

class TestApp(App):
    def build(self):
        self.sm = ScreenManager()
        #build()方法返回的控件,在kivy中称之为“根控件” root widget
        # kivy将自动缩放根控件,让它填满整个窗口

        screen = Screen(name = 'index')
        screen.add_widget(IndexPage)
        self.sm.add_widget(screen)
        return self.sm
# 当.py文件被直接运行时, if__name__ == '__main__' 之下的代码块将被运行
# 当.py文件以模块的形式被导入时,if __name__ == '__main__' 之下的代码块不被运行
if __name__ == '__main__':
    TestApp().run()  #启动应用程序

KIVY ScreenManager 使用案例常见错误总结-LMLPHP

如图报错,是因为第二十八行的代码中应该做这样修改

       screen.add_widget(IndexPage())

即可正常运行。

07-09 11:49