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() 方法,如以下程序所示。
Python Kivy 中的 Hello World
以下是在 Kivy − 中打印"Hello World"的完整代码
示例
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
运行此应用程序时,您将获得默认的 Kivy 应用程序窗口,其中有一个带有"Hello World"文本的标签。
您可以按"X"按钮关闭窗口并停止正在运行的应用程序。
Kivy 中的布局
在上面的程序中,我们在应用程序的根树中只使用了一个小部件,即标签。如果我们想要放置多个小部件,我们需要将它们添加到布局中,然后从 build() 方法返回布局对象。Kivy 支持各种类型的布局,例如 BoxLayout、FlowLayout、AnchorLayout 等。
让我们设计界面,以便在垂直 BoxLayout 对象中添加两个标签。标签一个接一个地添加。 HelloApp 类的 build() 方法将做相应更改。
示例
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()
输出
运行上述程序,获得以下输出 −