如何在kivy中可靠地获得标记标签的大小?

时间:2017-11-20 16:18:27

标签: python kivy

如果我不使用markup = True,那么这可行:

from kivy.core.text import Label as CoreLabel
lbl = CoreLabel(text=text, font_size=font_size)
lbl.refresh()
size_needed = lbl.texture.size # Need this size to display the label

但是一旦我开始使用标记,它就不起作用了。主要问题是[font=/path/to/font.ttf]Test[/font]之类的东西被解释为纯文本(而不是标记),并导致宽度值远高于应有的宽度值。我也尝试使用CoreLabel的标记版本:

from kivy.core.text.markup import MarkupLabel as CoreMarkupLabel

但由于某种原因,它也忽略了标记语言并将大小计算为纯文本。例如,一个大约20像素宽的简单字体真棒图标有texture.size[0]=1218。我还试图创建一个普通的kivy.uix.label.Label,但它始终有texture_size=(0,0),直到我实际将它添加到窗口并渲染它。但我不想实际显示标签。我只是想知道它所需要的大小。

背景:我需要创建工具提示和对话框,调整自己的大小以适应其内容。大多数内容将是标签中的标记文本,但有时会添加其他小东西(关闭按钮或额外图标)。为此,我需要确定内容占用的大小之前我显示内容。

0 个答案:

没有答案