7

我有一个函数(如下所示),我使用弹出窗口和 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()

谢谢

4

1 回答 1

11

ScrollView 只会在有东西滚动时才会滚动。

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

要垂直滚动,您应该将 TextInput 的宽度设置为其父 ScrollView 的宽度,高度应设置为较大的一个,即 ScrollView 的高度或行数 * line_height。

千伏::

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)
于 2013-01-04T02:33:50.820 回答