首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kivy Textinput

Kivy Textinput
EN

Stack Overflow用户
提问于 2016-02-24 20:02:36
回答 1查看 1.4K关注 0票数 3

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

粘贴到TextInput中的带有id seq_input_box的字符串

代码语言:javascript
复制
UUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUUUUCUUAUUU

.kv文件:

代码语言:javascript
复制
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

结果:

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-25 15:51:52

@zeeMonkeez,谢谢你调查这个问题的根源。下面是我最后使用的解决方案:

.py文件:

代码语言:javascript
复制
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的更多信息是可用的这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35611931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档