Kivy可滚动标签:不可能读取标签的开头和结尾

Kivy可滚动标签:不可能读取标签的开头和结尾

问题描述:

我有这些可滚动标签,但我无法读取它们的开头和结尾(字母从1开始,以8开头的字母)。Kivy可滚动标签:不可能读取标签的开头和结尾

另一个问题是,滚动视图从中间开始并在滚动被释放时自动跳回到*。最好让它显示左边的部分,让我停下来的标签滚动。

我使用Python 3.6和Kivy 1.9.2.dev0和我的代码必须是在Python(没有.kv文件或生成器)

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.properties import StringProperty 
from kivy.uix.scrollview import ScrollView 

class Test(App): 
    def build(self): 
     layout_pop = GridLayout (cols=3) 
     for i in range(3): 
      l = Label(
       text="1abcdefghijklmnopqrstuvwxyz_2abcdefghijklmnopqrstuvwxyz_3abcdefghijklmnopqrstuvwxyz_4abcdefghijklmnopqrstuvwxyz_5abcdefghijklmnopqrstuvwxyz_6abcdefghijklmnopqrstuvwxyz_7abcdefghijklmnopqrstuvwxyz_8abcdefghijklmnopqrstuvwxyz", 
       font_size=15, 
       color=(1,1,3,1), 
       size_hint_x= None, 
       width=600) 
      l.bind(size_hint_min_x=l.setter('width')) 
      scroll = ScrollView(size_hint=(None, None), size=(200, 30)) 
      scroll.add_widget(l) 
      layout_pop.add_widget(scroll) 
     return layout_pop 


Test().run() 

我只是不得不使用l.bind(texture_size=l.setter('size'))。这解决了2个问题。 这是更新的def功能:

def build(self): 
    layout_pop = GridLayout (cols=3) 
    for i in range(3): 
     l = Label( 
      text="1abcdefghijklmnopqrstuvwxyz_2abcdefghijklmnopqrstuvwxyz_3abcdefghijklmnopqrstuvwxyz_4abcdefghijklmnopqrstuvwxyz_5abcdefghijklmnopqrstuvwxyz_6abcdefghijklmnopqrstuvwxyz_7abcdefghijklmnopqrstuvwxyz_8abcdefghijklmnopqrstuvwxyz \n1abcdefghijklmnopqrstuvwxyz_2abcdefghijklmnopqrstuvwxyz_3abcdefghijklmnopqrstuvwxyz_4abcdefghijklmnopqrstuvwxyz_5abcdefghijklmnopqrstuvwxyz_6abcdefghijklmnopqrstuvwxyz_7abcdefghijklmnopqrstuvwxyz_8abcdefghijklmnopqrstuvwxyz", 
      font_size=15, 
      color=(1,1,3,1), 
      size_hint_x= None) 
     l.bind(texture_size=l.setter('size')) 
     l.bind(size_hint_min_x=l.setter('width')) 
     scroll = ScrollView(size_hint=(None, None), size=(200, 30)) 
     scroll.add_widget(l) 
     layout_pop.add_widget(scroll) 
    return layout_pop