Kivy - 致命的Python错误:(pygame降落伞)段错误
我正在尝试使用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()
1 个回答
1
我不太清楚你问题的具体原因,但你的代码里有好几个错误。而且,如果你能提供一个完整的、能正常运行的简单示例,那样会更容易找到问题所在。
主要的问题是,你在定义 __init__
方法时,没有调用 super(Popper, self).__init__(**kwargs)
(而且这个方法可能也需要用 def __init__(texty, **kwargs)
来定义,以便接收额外的参数)。这一步很重要,因为正常的 __init__
方法会设置所有正常的控件和弹出窗口的行为。
另外,你写的是 self.yazi = text
,其实应该是 self.yazi = texty
。
最后,Python 里有个常规习惯是类名要以大写字母开头。虽然这通常只是个风格上的建议,不是强制要求,但我觉得在 kv 语言中有时候是需要遵循的,所以如果不这样做,可能会导致程序崩溃或出现奇怪的行为。