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 中打印取自 kivy.uix.textinput.TextInput 的文本