python - 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.1
python3.7
解决方案
Kivy 应用程序有一个默认build()
方法,您可以在此处查看;它只是返回一个空的小部件。一般来说,kivy 有两种方法来创建根部件树,或者通过覆盖build()
或者通过在 kv 文件中定义根部件。有关更多信息,请参阅有关创建应用程序的文档。
您的报价可以在kivy basics中找到,在您引用的句子之前:
创建 kivy 应用程序非常简单:
我猜作者决定让基本教程保持简单,并没有提及 的默认实现build
,因为它并没有真正做任何有用的事情。他们还省略了定义根小部件的 kv 方式;在第一次介绍中,我再次猜测不会让读者不知所措。
推荐阅读
- windows - “抱歉,此文件无效,无法显示。” 在 GIthub 上使用 pdf 文件
- xcode - 如何在cordova项目中通过config.xml更改ios xcode“Packaging”->“Product Name”?
- reactjs - 每个组件的 useHistory 默认值
- fabricjs - 如何在没有settimeout的情况下制作多步fabric.js动画?
- ldap - LDAP 和用户服务是否相同?
- flutter - 解析来自 API 调用的响应
- mysql - 如何在 MySQL 中创建列而不是连接字符串?
- c - How to convert a char string into int string?
- ios - 使用参数请求数据 Alamofire SwiftUI
- typescript - 如何从另一个文件打字稿中导入打字数据和功能?