gpt4 book ai didi

python - Kivy 文本输入换行

转载 作者:行者123 更新时间:2023-11-28 18:32:27 24 4
gpt4 key购买 nike

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

使用 id seq_input_box 粘贴到 TextInput 中的字符串

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

结果:

enter image description here

谢谢

最佳答案

@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 .

关于python - Kivy 文本输入换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35611931/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com