Kivy Label 添加文本而不重叠
Posted
技术标签:
【中文标题】Kivy Label 添加文本而不重叠【英文标题】:Kivy Label add text without overlapping 【发布时间】: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.chat
是 BoxLayout
,这是 ScrollView
内部的布局
self.scroller
是ScrollView
非常感谢我收到的任何帮助!
【问题讨论】:
【参考方案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 语言的原因,但不确定我是否真的喜欢它——引擎盖下有很多魔法。 :)以上是关于Kivy Label 添加文本而不重叠的主要内容,如果未能解决你的问题,请参考以下文章
为啥我需要创建 Line 的新实例,而不是在 Kivy 中简单地更新或添加和删除它
为啥我需要创建 Line 的新实例,而不是在 Kivy 中简单地更新或添加和删除它