将我的小部件添加到 Kivy App __init__ 会导致黑屏和警告
Posted
技术标签:
【中文标题】将我的小部件添加到 Kivy App __init__ 会导致黑屏和警告【英文标题】:Adding my Widget to Kivy App __init__ leads to blank screen and Warning 【发布时间】:2015-08-07 06:23:19 【问题描述】:几天前我开始学习 Kivy Crash Course,想写一个记忆游戏。我的 App 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()
但是当我运行该代码时,我得到一个空窗口和这个警告:
[WARNING ] <__main__.MemoryGameWidget object at 0x02BCC490> have no cols or rows set, layout is not triggered.
谁能解释发生了什么以及我做错了什么?
【问题讨论】:
我忘记添加第二类的构建函数:def build(self): return self.mgwMemoryApp
是继承自 Widget
还是布局类?
MemoryGameWidget 继承自 GridLayout 和 MemoryApp 继承自 App
【参考方案1】:
但是把它放在__init__
中,你在它的 kv 规则被加载之前实例化了这个小部件,所以这个规则没有被应用。我会把它留在 build 方法中并忽略 pycharm 警告。
编辑:实际上,解决警告的适当方法可能是在__init__
中添加“self.mgw = None”,从而满足 pycharm 认为该属性正确存在而不改变它在构建中实际正确设置的方式方法。
【讨论】:
以上是关于将我的小部件添加到 Kivy App __init__ 会导致黑屏和警告的主要内容,如果未能解决你的问题,请参考以下文章