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 应用程序窗口。

kivy hello world

您可以按“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()

Output

运行上述程序以获得以下内容 output -

kivy hello world1