2015-02-01 2 views
0

내가 여기이 템플릿처럼 사용자 정의 슬라이더 양식을 말해봐 :kivy있는 ScrollView에서 사용자 지정 양식

<[email protected]>: 
    orientation: 'vertical' 
    padding: [0, '5 dp'] 
    size_hint_y: None 

    form_title: "Slider" 
    slider_value: slider_widget.value 
    slider_max: slider_widget.max 

    Label: 
     text: root.form_title 
     bold: True 
     text_size: (self.width - 20, self.height) 
     halign: 'left' 

    BoxLayout: 
     Slider: 
      id: slider_widget 
      min: 1 
      max: 5 
      value: 1 
      step: 1 
      padding: '15 dp' 

     Label: 
      text: str(int(root.slider_value)) 
      size_hint_x: None 
      width: self.height 

지금 나는이 여러가 필요하고있는 ScrollView 속에 넣어서 생각했다,하지만 난 어떻게하는지 알 수 없다.

내 시도는 다음과 같습니다

<MyScreen>: 
    BoxLayout: 
     orientation: "vertical" 

     ScrollView: 
      BoxLayout: 
       orientation: "vertical" 
       size_hint_y: None 
       minimum_height: self.setter('height') 

       SliderForm: 
        form_title: "Amount" 

       SliderForm: 
        form_title: "Other" 

이 방법, 양식이 잘 배치되지 않습니다 ... 하나가 없거나 서로의 상단에 쌓여있다.

답변

1
BoxLayout: 
    minimum_height: self.setter('height') 

이것은 올바르지 않습니다. 첫째, BoxLayout에는 minimum_height 속성이 없으므로 아무 것도하지 않는 새 속성을 만드는 것입니다. 둘째, self.setter ('height')는 함수를 반환하지만 아무것도 호출하지 않거나 아무것도 호출하지 않습니다.

GridLayout: 
    size_hint_y: None 
    height: self.minimum_height 

GridLayout과 가 아이의 높이를 합하는 minimum_height 속성을 가지고있다, 그래서 이것은 그 크기를 동적으로 조정하게됩니다 :

아마도 당신이 정말로 의미하는 것 같다. 이것은 ScrollView를 사용하는 일반적인 방법입니다.

그러나 이것은 잘못된 것이 아닙니다. SliderForm에는 size_hint_y: None이 포함되어 있지만 높이를 실제로 설정하지 않으므로 기본값은 100 픽셀입니다. 어쩌면 고정 된 값을 설정하려고했을 것입니다. height: 600?

+0

실제로 문제는 내 'SliderForm'에서'height'를 설정하지 않은 것처럼 보입니다. 'minimum_height'에 대한 팁을 주셔서 감사합니다. 나는 다른 답변에서 해결 방법으로 그것을 보았지만 그것이 틀린 것 같았다. 나는 또한 BoxLayout에서 GridLayout으로 변경했다. 하나의 열만 있기 때문에 이전 열과 함께 할 수 있습니까? – Hugo

+0

아니요,하지만 전혀 문제가되지 않습니다. GridLayout은 한 열에 문제가 없습니다. – inclement

관련 문제