将我的小部件添加到 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 属性正确存在而不改变其实际情况在构建方法中正确设置。
前几天开始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 属性正确存在而不改变其实际情况在构建方法中正确设置。