滚动小部件中的 Kivy 标签文本换行
Posted
技术标签:
【中文标题】滚动小部件中的 Kivy 标签文本换行【英文标题】:Kivy Label text wrap in scroll widget 【发布时间】:2016-01-04 16:04:51 【问题描述】:我正在尝试制作一个简单的聊天流媒体。我正在努力使聊天消息左对齐并根据窗口大小动态包装文本。
这个想法是让聊天消息在网格布局中显示为标签。
class ChatMessage(Label):
def __init__(self, *args, **kwargs):
super(ChatMessage, self).__init__(*args, **kwargs)
self.text_size = self.size
self.halign = 'left'
class Root(ScreenManager):
def __init__(self, *args, **kwargs):
super(ScreenManager, self).__init__(*args, **kwargs)
self.ids.chatstream.bind(minimum_height=self.ids.chatstream.setter('height'))
self.add_message()
def add_message(self):
for x in xrange(50):
label = ChatMessage(text='Im still not completely sure I understand the mechanisms at work here, though.. Im still not completely sure I understand the mechanisms at work here, though.. Im still not completely sure I understand the mechanisms at work here, though.' + str(x))
self.ids.chatstream.add_widget(label)
self.ids.scroller.scroll_y = 0
kv 文件:
<Root>:
Screen:
name: 'main'
BoxLayout:
orientation: 'vertical'
Button:
text: ''
on_release: app.root.current = 'chat'
Screen:
name: 'chat'
BoxLayout:
orientation: 'vertical'
ScrollView:
id: scroller
do_scroll_x: False
GridLayout:
id: chatstream
cols: 1
padding: (10, 15)
spacing: 20
size_hint_y: None
Button:
text: ''
on_release: app.root.current = 'main'
【问题讨论】:
【参考方案1】:设置 ChatMessage 实例的大小,例如
<ChatMessage>
size_hint_y: None
height: self.texture_size[1] # the size needed to fit the text
text_size: self.width, None
同时删除 python 大小中的 text_size 设置。如果您也将 halign 设置为 kv,则可以完全删除 __init__
。
【讨论】:
以上是关于滚动小部件中的 Kivy 标签文本换行的主要内容,如果未能解决你的问题,请参考以下文章