首页 > 解决方案 > kivy 应用程序在没有实现 build() 方法的情况下运行

问题描述

想知道为什么尽管对 kv 文件进行了一些更新,但 Kivy 代码仍然向我显示相同的黑色窗口。然后注意到我在buidl()方法上有一个错字。

从文档“...实现其 build() 方法,因此它返回一个 Widget 实例(您的小部件树的根) ...”,您必须实现该方法。

为什么这段代码会运行并给出默认的黑色窗口?

# game.py
from kivy.app import App
from kivy.uix.widget import Widget


class Game(Widget):
    pass


class GameApp(App):
    def buidl(self):
        return Game()


GameApp().run()

.kv 文件

#game.kv
<Game>:
    canvas:
        Color:
            rgb: .5,.5, 1.0
        Rectangle:
            pos: 0,0
            size: self.size

运行 kivy 1.11.1python3.7

标签: pythonkivykivy-language

解决方案


Kivy 应用程序有一个默认build()方法,您可以在此处查看;它只是返回一个空的小部件。一般来说,kivy 有两种方法来创建根部件树,或者通过覆盖build()或者通过在 kv 文件中定义根部件。有关更多信息,请参阅有关创建应用程序的文档。

您的报价可以在kivy basics中找到,在您引用的句子之前:

创建 kivy 应用程序非常简单:

我猜作者决定让基本教程保持简单,并没有提及 的默认实现build,因为它并没有真正做任何有用的事情。他们还省略了定义根小部件的 kv 方式;在第一次介绍中,我再次猜测不会让读者不知所措。


推荐阅读