Kivy - 致命Python错误:( pygame parachute)分段错误

时间:2014-03-04 00:04:15

标签: python kivy

我正在尝试使用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 个答案:

答案 0 :(得分:1)

我不确切知道是什么导致了您的问题,但您的代码中存在多个错误。此外,最好是提供一个完整的最小化示例,这样可以更容易调试。

主要错误(可能导致这种情况)是您不在super(Popper, self).__init__(**kwargs)定义中调用__init__(可能还需要使用def __init__(texty, **kwargs)定义以捕获额外的参数)。这很重要,因为正常__init__设置了所有正常的小部件和弹出行为。

当您的意思是self.yazi = text时,您还有self.yazi = texty

最后,让类名以大写字母开头是一种普通的Python约定。虽然这通常只是一个风格指南,而不是一个要求,但我认为kv语言有时依赖于它,所以如果你不这样做,你可能会遇到崩溃或奇怪的行为。