2017-07-28 5 views
0

Ich benutze MultiTab in Kivy. So vergrößern Sie die Bildlaufleiste, so dass die Bildlaufleiste mit der Maus verschoben werden kann (oben_unten). Ich benutze BoxLayout und RecycleView. Der folgende Code wurde die Arbeit mit gridlayout, aber nicht in BoxLayout:Wie maximiere Scrollbar in Kivy Python?

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

Sie können diese Bildlaufleiste nicht zum Scrollen bewegen, Sie benötigen dazu einen separaten Schieberegler. –

+0

Wie mache ich das, wenn ich RecycleView und BoxLayout verwende? Kannst du ein Beispiel geben? Vielen Dank. – MXDel

+0

Ich denke, dass ich dieses Beispiel https://github.com/kivy/kivy/wiki/A-draggable-scrollbar-using-a-slider verwendet habe, als ich mein eigenes gemacht habe, probiere es aus. –

Antwort

1

enter image description here Hier ist ein Beispiel dafür, wie Scroll zu erweitern, um auch einen dragable Schieber zu bekommen.

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() 

Sie müssen die custom_add verwenden, um Widgets hinzuzufügen im ScrollSlider oder sie in Kivy zum GridLayout hinzuzufügen.

Ich nahm etwas Inspiration von der Verbindung @ Edvardas Dlugauskas zur Verfügung gestellt.

Der von Ihnen angegebene Code funktioniert nicht mit BoxLayout, da BoxLayout nur die Größe des übergeordneten Elements übernimmt. Um scrollen zu können, müssen Sie sth in ScrollView hinzufügen, was größer ist als die ScrollView selbst.