如何配置Kivy文本输入框,使其将粘贴到其中的文本包装起来?例如,假设我有一个长度为1,000个字母的字符串,并将其粘贴到已启用multiline的文本输入框中。粘贴的文本将显示为超出窗口宽度的一行,而不是包装到下一行。非常意外的行为。
粘贴到TextInput中的带有id seq_input_box的字符串
UUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUU.kv文件:
MinRoot:
<MinRoot>:
MyForm
<MyForm>:
orientation: "vertical"
seq_input: seq_input_box
BoxLayout:
height: "40dp"
size_hint_y: None
Button:
text: "Go!"
on_press: root.calc_seq()
TextInput:
id: seq_input_box
focus: True结果:

谢谢
发布于 2016-02-25 15:51:52
@zeeMonkeez,谢谢你调查这个问题的根源。下面是我最后使用的解决方案:
.py文件:
class MyTextBox(TextInput):
def insert_text(self, substring, from_undo=False):
line_length = 50
# Remove all whitespace in string.
seq = ''.join(substring.split())
# For every line_length characters, insert a newline character.
if len(seq) > line_length:
# Splits seq by every Nth character and creates a list.
# Example: [abc,def,ghi]
# Then join the list items together using a newline character
# as the separator.
seq = '\n'.join([seq[i:i+line_length] for i in range(0, len(seq), line_length)])
return super(MyTextBox, self).insert_text(seq, from_undo=from_undo)关于insert_text的更多信息是可用的这里。
https://stackoverflow.com/questions/35611931
复制相似问题