# 导入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() #启动应用程序
TypeError: unbound method EventDispatcher.bind() needs an argument
如图报错,是因为第二十八行的代码中应该做这样修改
screen.add_widget(IndexPage())
即可正常运行。