在TextInput中实现kivy ScrollView

时间:2013-01-02 05:36:55

标签: kivy

我有一个函数(如下所示),我使用弹出窗口和TextInput来显示一些文本,在大多数情况下,文本内容比弹出窗口大,因此需要滚动。没有ScrollView我需要依靠键盘箭头键进行滚动,我尝试实现ScrollView,以便我可以使用鼠标滚轮滚动。但问题是它似乎没有效果,任何想法都是为什么?

def dispPopup(display_text):                                                                     
    root = ScrollView(size_hint=(0.8, 0.5))
    root.add_widget(TextInput(text= display_text, , size_hint=(0.8, 0.5)))
    popup = Popup(title='Search Result',
            content= root, size_hint=(0.8, 1), pos_hint={'right': 1}) 
    popup.open()

由于

1 个答案:

答案 0 :(得分:5)

ScrollView只会在有滚动的内容时滚动。

您正在向ScrollView添加Textinput,但将Textinput的size_hint设置为.8,.5(80%宽度和50%高度的父级,即ScrollView)。所以没有什么可以滚动的。

要垂直滚动,您应该将TextInput的宽度设置为其父ScrollView的宽度,并且高度应设置为更大的值,ScrollView的高度或行数* line_height。

in kv ::

ScrollView:
    id: scrlv
    TextInput:
        text: disp_text
        size_hint: 1, None
        height: max( (len(self._lines)+1) * self.line_height, scrlv.height)

TextInput将根据其中的行数或者滚动视图高度或字体大小/样式垂直动态增长,这会改变line_height

更新::

从1.8.0开始,您只需执行::

height: max(self.minimum_height, scrlv.height)