2013-06-05 2 views
3

У меня возникают проблемы с переходом между понятиями на языке Киви и языком Python. Я не очень хорошо объяснить вещи, и я думал о том, как объяснить мою специфической проблемы, но лучший способом я могу думать, чтобы сделать это:Kivy: пример ScrollViewApp в языке Kivy

Как бы один реализовать ScrollViewApp с помощью Builder функционировать?

ответ

4

гм, что-то вроде

ScrollView: 
    size_hint: None, None 
    size: 500, 320 
    pos_hint: {'center_x': .5, 'center_y': .5} 
    do_scroll_x: False 

    GridLayout: 
     cols: 1 
     padding: 10 
     spacing: 10 
     size_hint_y: None 
     height: self.minimum_height 

     ScrollButton: 
      text: '1' 
     ScrollButton: 
      text: '2' 
     ScrollButton: 
      text: '3' 
     ScrollButton: 
      text: '4' 
     ScrollButton: 
      text: '5' 
     ScrollButton: 
      text: '6' 

<[email protected]> 
    size_hint: None, None 
    size: 480, 40 

здесь, однако мы не действительно есть способ динамически создавать детей (ну, было бы пути, но они уродливы), поэтому я положил несколько вручную, вы идеализировали бы ScrollView и GridLayout в kv, а затем помещали детей из python (используя ids, как объяснено в документе).

редактировать: более полная версия, используя приложение и OBJECTPROPERTY

Kv файл (scroll.kv):

ScreenManager: 
    Screen: 
     ScrollView: 
      size_hint: None, None 
      size: 500, 320 
      pos_hint: {'center_x': .5, 'center_y': .5} 

      GridLayout: 
       cols: 1 
       padding: 10 
       spacing: 10 
       height: self.minimum_height 
       size_hint: None, None 
       do_scroll_x: False 
       id: container 

<ScrollButton> 
    size_hint: None, None 
    size: 480, 40 

питон файл (main.py):

from kivy.app import App 
from kivy.uix.button import Button 

class ScrollButton(Button): 
    pass 

class ScrollApp(App): 
    def build(self): 
     super(ScrollApp, self).build() 
     container = self.root.ids.container 
     for i in range(30): 
      container.add_widget(ScrollButton(text=str(i))) 
     return self.root # return root does not work 

if __name__ == '__main__': 
    ScrollApp().run() 
+0

И там вы см. проблему. Мой «ScrollViewApp» будет одним из экранов в моем ScreenManager. Я решил добавить кнопки в скроллер динамически, используя ObjectProperty в качестве ссылки, но без кубиков. Действительно ли нет эквивалентного метода? –

+0

Чтобы дать вам немного фона, это приложение «Список дел». Кнопками будут задачи, вызванные из хранимой таблицы. –

+0

Отредактировано, чтобы показать более полное приложение, которое должно получить вас на дорожках. – Tshirtman