Kivy 简明教程
Kivy - Hello World
让我们从使用 Kivy 构建一个简单的“Hello World”应用程序开始。请按照以下步骤操作 −
要开发 Kivy 应用程序,您需要从“kivy.app”模块导入 App 类。
from kivy.app import App
以 App 为其基类的类的对象表示应用程序。要设计界面,请重写返回根控件的 build() 方法。现在,让我们在 build() 方法中放入 pass 语句。
class HelloApp(App):
def build(self):
pass
接下来,实例化上述“HelloApp”类 -
app = HelloApp()
App 类中的 run() 方法启动一个无限事件循环。它显示一个空白应用程序窗口,该窗口当前没有任何控件。
app.run()
现在,让我们向根控件添加一个带有“Hello World”标题的不可编辑标签。为此,我们必须从“kivy.uix.label”模块导入 Label 类。如下所示更改 build() 方法。
Hello World in Python Kivy
以下是使用 Kivy 打印“Hello World”的完整代码 -
Example
from kivy.app import App
from kivy.uix.label import Label
class HelloApp(App):
def build(self):
l1 = Label(text="Hello World", font_size=50)
return l1
app = HelloApp()
app.run()
Label 对象可以用许多属性进行配置。此处,我们仅设置了 text 和 font_size 属性。
从命令行运行上述代码 (hello.py) -
python hello.py
Kivy 在终端中生成更多日志文本
[INFO ] [Factory] 190 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2, img_pil (img_ffpyplayer ignored)
[INFO ] [Text ] Provider: sdl2
[INFO ] [Window ] Provider: sdl2
[INFO ] [GL ] Using the "OpenGL" graphics system
[INFO ] [GL ] GLEW initialization succeeded
[INFO ] [GL ] Backend used <glew>
[INFO ] [GL ] OpenGL version <b'4.6.0 - Build 31.0.101.3959'>
[INFO ] [GL ] OpenGL vendor <b'Intel'>
[INFO ] [GL ] OpenGL renderer <b'Intel(R) Iris(R) Xe Graphics'>
[INFO ] [GL ] OpenGL parsed version: 4, 6
[INFO ] [GL ] Shading version <b'4.60 - Build 31.0.101.3959'>
[INFO ] [GL ] Texture max size 16384
[INFO ] [GL ] Texture max units 32
[INFO ] [Window ] auto add sdl2 input provider
[INFO ] [Window ] virtual keyboard not allowed, single mode, not docked
[INFO ] [Base ] Start application main loop
[INFO ] [GL ] NPOT texture support is available
当您运行此应用程序时,您将获得带有标签并且上面显示有“Hello World”文本的默认 Kivy 应用程序窗口。
您可以按“X”按钮关闭窗口并停止正在运行的应用程序。
Layouts in Kivy
在上述程序中,我们仅在应用程序的根树中使用了一个控件,即 Label。如果我们要放置多个控件,则需要将它们添加到 Layout 中,然后从 build() 方法中返回 Layout 对象。Kivy 支持各种类型的布局,如 BoxLayout、FlowLayout、AnchorLayout 等。
让我们设计如下界面:在垂直 BoxLayout 对象中添加两个 Label。这些标签一个接一个地添加。HelloApp 类的 build() 方法将作相应更改。
Example
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
class HelloApp(App):
def build(self):
lo = BoxLayout(orientation='vertical')
l1 = Label(text="Hello World", font_size=50)
l2 = Label(text = "From TutorialsPoint",
font_size=30,
color = (1,0,0,1))
lo.add_widget(l1)
lo.add_widget(l2)
return lo
app = HelloApp()
app.run()