2014-03-04 6 views
1

나는 kivy를 실험하고 있는데, 다음 코드에서 세그먼트 결함이 계속 발생하며 알아낼 수 없습니다. 나는 파이썬으로 클래스에 대한 나의 이해가 잘못되었다고 생각한다.Kivy - 치명적인 파이썬 오류 : (파이 게임 낙하산) 분할 오류

#p.open()

주석 발견 시행 착오

문제를 중지, 아직 내가 해결하거나 오류를 이해할 수 없습니다. 감사

오류 :

Fatal Python error: (pygame parachute) Segmentation Fault

파이썬 코드

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

나는 문제의 원인을 정확히 알 수는 없지만, 여러 버그가 있습니다 귀하의 코드입니다. 또한 최소한의 예제 만 제공하면 디버깅이 훨씬 쉬워진다.

주요 버그 (즉 잘 발생할 수 있습니다) 당신은 (아마도 여분의 인수를 잡으려고 def __init__(texty, **kwargs) 정의 할 필요가있다) 당신의 __init__ 정의에 super(Popper, self).__init__(**kwargs)를 호출하지 않는다는 것입니다. 이는 보통의 __init__이 정상적인 위젯 및 팝업 동작을 모두 설정하기 때문에 매우 중요합니다.

self.yazi = texty이라는 뜻의 self.yazi = text도 있습니다.

마지막으로 대문자로 시작하는 클래스 이름을 갖는 것은 일반적인 파이썬 규칙입니다. 이것은 일반적으로 단지 스타일 가이드이며 요구 사항은 아니지만 kv 언어가 가끔씩 달려 있다고 생각합니다. 그렇게하지 않으면 크래시 또는 이상한 행동을 취할 수 있습니다.

+0

솔루션 및 팁 주셔서 감사합니다! – Kartopukus

관련 문제