一起学习kyvy(一):第一个kivy程序“Hello World”
kivy是跨平台的,可运行在手机、window、平果等电脑地方。由于kyvy是基于python开发的,所以在安装kivy之前,请安装好python3的稳定版本。我们一起来学习吧。
一、安装kivy包
pip install kivy
程序会自动下载并安装最新版本,同时会安装一些主要依赖包。一些其他包边用边安装。
二、第一个kivy程序“Hello World”
(一)main.py文件
# 导入 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
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):
# 实现 TestApp 类的 build 方法(继承自 App 类)
def build(self):
# build 方法返回的控件,在 Kivy 中,称之为“根控件” (root widget)
# Kivy 将自动缩放根控件,让它填满整个窗口。
return IndexPage()
# 当.py文件被直接运行时,if __name__ == '__main__'之下的代码块 将 被运行
# 当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块 不被运行
if __name__ == "__main__":
TestApp().run()
结果是这样:是一个大按钮,它目前占满了整个程序的界面。后续通过布局可以调整各控件(widget)的位置、大小等。
kivy 最大的思想就是将界面和逻辑分开写,而编写界面的代码,如同CSS一样简单,kivy公司称之为kivy design language 。这样界面调整不会影响逻辑层面的调整,非常方便。希望大家熟练这种写法。以上程序可以改成界面文件test.kv和逻辑文件main.py:
# 导入 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
class IndexPage(BoxLayout):
# 初始化
def __init__(self, **kwargs):
super().__init__(**kwargs)
# 从 App 类中继承了 kivy 应用最基本的方法,如创建窗口、设置窗口的大小和位置等
class TestApp(App):
# 实现 TestApp 类的 build 方法(继承自 App 类)
def build(self):
# build 方法返回的控件,在 Kivy 中,称之为“根控件” (root widget)
# Kivy 将自动缩放根控件,让它填满整个窗口。
return IndexPage()
# 当.py文件被直接运行时,if __name__ == '__main__'之下的代码块 将 被运行
# 当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块 不被运行
if __name__ == "__main__":
TestApp().run()
test.kv(与主类名TestApp转为小写并去掉App,这样会自动加载这个文件):
<IndexPage>:
Button:
text: 'Hello World!'
界面文件test.kv是不是很简单?运行的效果应是一样的。您可以修改kivy文件,如添加Label等。