【问题标题】:Kivy Label add text without overlappingKivy Label 添加文本而不重叠
【发布时间】:2019-12-17 13:25:40
【问题描述】:

我正在制作一个简单的聊天室应用程序,它运行良好,除了当用户输入一条长消息时,它会与ScrollView 中的其他消息重叠,如下所示:

这是标签的代码:

message_lab = Label(text=text, markup=True, size_hint_y=None)
message_lab.width = self.width
message_lab.text_size = message_lab.width, None
self.chat.add_widget(message_lab)
self.scroller.scroll_to(message_lab)

备注:

self.width 的值为 800

self.chatBoxLayout,这是 ScrollView 内部的布局

self.scrollerScrollView

非常感谢我收到的任何帮助!

【问题讨论】:

    标签: python text label kivy


    【解决方案1】:

    使用 kv 规则和 Label 子类,例如:

    <YourLabel>:
        height: self.texture_size[1]
        text_size: self.width, None
    

    【讨论】:

    • 谢谢!这行得通,但是当我尝试在 python 代码中做同样的事情时,它不起作用。你知道这是为什么吗?
    • 您可能实际上并没有在 Python 代码中做同样的事情。这里的 kv 示例自动创建一个绑定,以便 text_size 在 self.width 更改时更新,而 height 在 self.texture_size 更改时更新。您可以在 Python 中执行此操作,但必须显式进行绑定以执行更新。
    • 这很好用。虽然我更喜欢在代码中做事,并且确实做了它的 Python 绑定版本 - 几乎 工作方式相同。出于某种原因,当窗口调整大小时,它不会通知标签进行更新(或其他东西)。虽然我知道 .kv 语言的原因,但不确定我是否真的喜欢它——引擎盖下有很多魔法。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多