2017-07-28 12 views
0

我在kivy中使用multiTab。如何放大滚动条,使滚动条可以通过鼠标移动(up_down)。我使用BoxLayout和RecycleView。下面的代码与网格布局是工作,而不是在BoxLayout的:如何最大化Kivy python中的滚动条?

layout.bind(minimum_height=layout.setter('height')) 
+0

你实际上不能拖动那个滚动条来滚动,你需要一个单独的滑块来做到这一点。 –

+0

那么当我使用RecycleView和BoxLayout时该怎么做?你能举一些例子吗?谢谢。 – MXDel

+0

我想我使用这个例子https://github.com/kivy/kivy/wiki/A-draggable-scrollbar-using-a-slider当我自己做,试试看。 –

回答

1

enter image description here 下面是如何延长滚动型也得到了dragable滑块的例子。

from kivy.app import App 
from kivy.uix.boxlayout import BoxLayout 
from kivy.lang import Builder 
from kivy.uix.label import Label 

Builder.load_string(""" 
<ScrollSlider>: 
    ScrollView: 
     id: scrlvw 
     bar_width: 0 
     GridLayout: 
      id: grid 
      size_hint_y:None 
      cols:1 
      height: self.minimum_height 
      scroll_y: slider.value 
      on_touch_move: slider.value = self.scroll_y 
    Slider: 
     size_hint_x: None 
     width: root.width*0.2 
     id: slider 
     min: 0 
     max: 1 
     orientation: 'vertical' 
     value: scrlvw.scroll_y 
     on_value: scrlvw.scroll_y = self.value 

""") 


class ScrollSlider(BoxLayout): 

    def custom_add(self, widget): 
     self.ids.grid.add_widget(widget) 

class MyApp(App): 


    def build(self): 
     scrollslider = ScrollSlider() 
     for i in range(1, 100): 
      scrollslider.custom_add(Label(text=str(i), height=100, size_hint_y=None)) 
     return scrollslider 

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

您需要使用custom_add添加小部件在ScrollSlider或他们kivy添加到GridLayout

我从链接@Edvardas Dlugauskas提供了一些灵感。

您提供的代码不适用于BoxLayout,因为BoxLayout只取其父级的大小。为了能够滚动,你需要添加一些ScrollView,这比ScrollView本身大。