我正在尝试使用kivy,我不断通过以下代码获得分段错误,但无法弄明白。我怀疑我对python中的类的理解有问题。
通过反复试验发现评论
#p.open()
停止问题,但我无法解决也无法理解错误。 感谢
错误:
致命的Python错误:( pygame降落伞)分段错误
Python代码
class popper(Popup):
yazi= StringProperty("notsetyet")
def __init__(self, texty):
self.yazi = text
print texty
class boxxy(BoxLayout):
...
def on_press(self):
p = popper("test_value")
p.open()
...
.kv文件
<popper>
title: "Warn"
size_hint: 0.5 , 0.5
BoxLayout:
orientation: 'vertical'
Label:
text: root.yazi
Button:
text: "close"
on_press: root.dismiss()
答案 0 :(得分:1)
我不确切知道是什么导致了您的问题,但您的代码中存在多个错误。此外,最好是提供一个完整的最小化示例,这样可以更容易调试。
主要错误(可能导致这种情况)是您不在super(Popper, self).__init__(**kwargs)
定义中调用__init__
(可能还需要使用def __init__(texty, **kwargs)
定义以捕获额外的参数)。这很重要,因为正常__init__
设置了所有正常的小部件和弹出行为。
当您的意思是self.yazi = text
时,您还有self.yazi = texty
。
最后,让类名以大写字母开头是一种普通的Python约定。虽然这通常只是一个风格指南,而不是一个要求,但我认为kv语言有时依赖于它,所以如果你不这样做,你可能会遇到崩溃或奇怪的行为。