2017-03-05 23 views
1

ScrollView docのコードをGridLayout内の水平軸にスクロール可能なラベルを取得するように調整しようとしています。 GridLayoutはスクロール可能であってはならず、その中のラベルだけです。Kivy:GridLayout内の水平スクロール可能なラベル

私のアプリでは、kv言語(.kvまたはビルダーのいずれでも)を使用できないため、コードはPythonでなければなりません。

from kivy.uix.gridlayout import GridLayout 
from kivy.uix.label import Label 
from kivy.uix.scrollview import ScrollView 
from kivy.app import runTouchApp 

layout = GridLayout(cols=1, spacing=10) 

for i in range(10): 
    label = Label(text="abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz", height = 30, size_hint_x=None, width=400) 
    label.bind(minimum_width=label.setter('width')) 
    root = ScrollView(size_hint=(None, 1), size=(label.width, label.height)) 
    root.add_widget(label) 
    layout.add_widget(root) 


runTouchApp(layout) 

答えて

1

これまでのところ、これは動作しています:

import kivy 

from kivy.app import App 
from kivy.uix.gridlayout import GridLayout 
from kivy.uix.button import Button 
from kivy.uix.popup import Popup 
from kivy.uix.label import Label 
from kivy.uix.scrollview import ScrollView 

class Test(App): 
    def build(self): 
     layout = GridLayout (cols=3) 
     for i in range(3): 
      l = Label(font_size=15, size_hint_x= None, width=300, text="This is a very looooooooooooooooooooonnnnnnnnnnnnnnnnnnnng text. Indeed it is a very loooooooooooooooooooooonnnnnnnnnnnnnnnng text") 
      l.bind(size_hint_min_x=l.setter('width')) 
      scroll = ScrollView(size_hint=(None, None), size=(100, 400), pos_hint={'center_x':.5, 'center_y':.5}) 
      scroll.add_widget(l) 

      layout.add_widget(scroll) 
     return layout 


Test().run() 
関連する問題