如何在Kivy Listview中格式化滚动条

4
我有一个包含自定义按钮的ListView。如何调整滚动条的格式,使其始终可见(如果有需要滚动的内容...),将其扩宽(10个点而不是默认的2个点)并给它不同的颜色?
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)
1个回答

2

ListView 包含一个 ScrollViewScrollView 内部又包含一个 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_widthbar_colorbar_inactive_color。这些属性可以通过lv.container.parent.bar_width等方式访问,其中lv = ListView()


太棒了!非常感谢。这真的帮了我很多。 - Bill Bridge
亲爱的@zeeMonkeez,这是一个有点过时的问题,但我想在此添加一个子问题。是否可以在鼠标悬停时增加bar_width?当用鼠标点击滚动条时,如何触发此事件? - Bill Bridge
@BillBridge 您可能需要提出一个新问题。我已经有一段时间没有使用Kivy了... - zeeMonkeez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接