2016-03-30 2 views
4

У меня есть ListView, содержащий настраиваемые кнопки для списка. Как я могу отформатировать полосу прокрутки таким образом, чтобы она всегда была видна (в случае, если есть что прокрутить ...), сделать ее более широкой (10 очков вместо значения по умолчанию 2) и придать ей другой цвет?Как отформатировать полосу прокрутки в Kivy Listview

DoScroll.py файл:

from kivy.app import App 
from kivy.uix.boxlayout import BoxLayout 
from kivy.uix.listview import ListItemButton 

class ShowItems(BoxLayout): 
    def get_list(self): 
     self.results.item_strings = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"} 

    def show_capital(self, capital): 
     print capital 

class CapitalButton(ListItemButton): 
    pass 

class DoScrollApp(App): 
    pass 

if __name__ == '__main__': 
    DoScrollApp().run() 

А вот файл DoScroll.kv.

#: import DoScroll DoScroll 
#: import ListAdapter kivy.adapters.listadapter.ListAdapter 


<CapitalButton>: 
    text_size: self.width - 50, None 
    halign: 'left' 
    valign: 'middle' 
    font_size: 16 
    on_press: app.root.show_capital(self.text) 

ShowItems: 

<ShowItems>: 
    results: results_list 
    orientation: "vertical" 
    BoxLayout: 
     height: "40dp" 
     size_hint_y: None 
     Button: 
      text: "Get the list" 
      on_press: root.get_list() 
    ListView: 
     id: results_list 
     adapter: 
      ListAdapter(data=[], args_converter=lambda row_index, 
       an_obj: {'text': an_obj,'size_hint_y': None,'height': 40}, cls=DoScroll.CapitalButton) 

ответ

2

ListView содержит ScrollView, который, в свою очередь, удерживает GridView держит элементы списка. Соответствующие kv правила таковы (от listview.py):

<ListView>: 
    container: container 
    ScrollView: 
     pos: root.pos 
     on_scroll_y: root._scroll(args[1]) 
     do_scroll_x: False 
     GridLayout: 
      cols: 1 
      id: container 
      size_hint_y: None 

ScrollView обладает свойствами bar_width, bar_color, bar_inactive_color. Доступ к ним можно получить через lv.container.parent.bar_width и т. Д., Для lv = ListView().

+0

Прохладный! Огромное спасибо. Это действительно помогает. –

Смежные вопросы