Kivy 文本输入换行

Kivy Textinput Wrap

如何配置 Kivy 文本输入框,使其包含我粘贴到其中的文本?例如,假设我有一个 1,000 个字母长的字符串,我将其粘贴到启用了 multiline 的文本输入框中。粘贴的文本不是换行到下一行,而是显示为超出 window 宽度的一行。非常意外的行为。

粘贴到 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

结果:

谢谢

@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 的更多信息 here