【问题标题】:kivy ScrollView implementation in TextInputTextInput中的kivy ScrollView实现
【发布时间】:2012-12-16 12:58:45
【问题描述】:

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

谢谢

【问题讨论】:

    标签: kivy


    【解决方案1】:

    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)
    

    【讨论】:

    • 谢谢,这行得通,但我必须为 textinput 添加 size_hint_y: None
    • 是的,您需要将 size_hint_y 设置为 None,我忘了提到您需要相应地设置 size_hint。更新了答案中的示例以反映应该如何使用 size_hint。
    • @qua-non 我正在尝试为多行文本输入添加滚动条,但此代码 dpaste.com/hold/1281777 实际上是为文本输入对象提供滚动,而不是为其中的内容提供滚动。有什么建议我如何使用滚动来显示 textinput 的内容?
    猜你喜欢
    • 2012-08-29
    • 2021-10-06
    • 2020-11-10
    • 2017-09-18
    • 2019-02-19
    • 2013-09-10
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    相关资源
    最近更新 更多