将我的小部件添加到 Kivy 应用 __init__ 导致黑屏和警告

Adding my Widget to Kivy App __init__ leads to blank screen and Warning

前几天开始Kivy Crash Course,想写一个记忆游戏。我的应用 Class 看起来像这样:

   class MemoryApp(App):
    def build(self):
        self.mgw = MemoryGameWidget()
        return self.mgw

此代码适用于我的 .kv 文件。

我总是使用 Pycharm Code Inspect 检查我的代码。 Pycharm 建议将属性移动到 init :

class MemoryApp(App):
def __init__(self, **kwargs):
    super().__init__(**kwargs)
    self.mgw = MemoryGameWidget()

但是当我 运行 该代码时,我得到一个空的 window 和这个警告:

 [WARNING           ] <__main__.MemoryGameWidget object at 0x02BCC490> have no cols or rows set, layout is not triggered.

有人可以解释发生了什么以及我做错了什么吗?

但是将它放在 __init__ 中,您在加载其 kv 规则之前实例化了小部件,因此不应用该规则。我会把它留在构建方法中并忽略 pycharm 警告。

编辑:实际上,解决警告的适当方法可能是在 __init__ 中添加 'self.mgw = None',从而满足 pycharm 属性正确存在而不改变其实际情况在构建方法中正确设置。