TextInput中的kivy ScrollView实现

Posted

技术标签:

【中文标题】TextInput中的kivy ScrollView实现【英文标题】:kivy ScrollView implementation in TextInput 【发布时间】: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()

谢谢

【问题讨论】:

【参考方案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 的内容?

以上是关于TextInput中的kivy ScrollView实现的主要内容,如果未能解决你的问题,请参考以下文章

如何在kivy python中添加标签,TextInput

Kivy TextInput 和字体

使 Kivy TextInput 框架不可见但显示文本

无法在 KIVY Python 中打印取自 kivy.uix.textinput.TextInput 的文本

Kivy:如何在 kivy 中制作圆角 TextInput?

Kivy:如何摆脱 TextInput 中奇怪的阴影外观?